我有一些代码,我使用的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
哦,那真是尴尬,哈哈 –