[英]Why does this iterator comparison fail?
請看以下代碼:
if((pos = find()) != _sym.end())
{
// do stuff
}
pos
是std::vector<T>::const_iterator
類型的作用域變量,其中T
是包含一對相同類型迭代器的 POD 結構。
_sym
是std::vector<T>
類型的私有類成員變量。
示例代碼引發運行時斷言錯誤,並顯示消息Expression: vector iterators incompatible
under Visual Studio 2013。錯誤發生在<vector>
的第 240 行。
另一方面,如果我重新編寫代碼:
pos = find();
if(pos != _sym.end()) // do stuff
然后,迪斯科。
我相當確定將初始化的迭代器(例如end()
)與未初始化的迭代器進行比較會導致此斷言; 我不明白的是,當執行比較運算符時,是否/如何不考慮pos
處於初始化狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.