我有一些代碼,我使用的gcc 4.7(從3.1)std :: multiset :: iterator = NULL不再有效嗎?
更新到C++ 11 I有定義爲類的私有成員一個多重集:
multiset <Object*, objectcomp> objects_;
在代碼是,是這樣的一個部分(p_q是一對多集的迭代器,約那個討厭的線抱歉,不能等待替換成自動,哈哈):
void Terrain::removeObject(Object* obj){
pair<multiset<Object*, objectcomp>::iterator, multiset<Object*, objectcomp>::iterator> p_q;
multiset<Object*, objectcomp>::iterator p,q;
q = NULL;
p_q = objects_.equal_range(obj);
for(p = p_q.first; p != p_q.second; p++){
if(*p == obj) {q=p; break;}
}
if(q!=NULL){
... do stuff based on q no longer being null
}
}
這將無法編譯了。你不能將迭代器設置爲null嗎?什麼是替代方案? (nullptr也不起作用)
這是**從來沒有**有效。 – ildjarn
哦,那真是尷尬,哈哈 –