我有一些代码正在使用 gcc 4.7(来自 3.1)更新到 C++11
我有一个定义为类的私有成员的多重集:
multiset <Object*, objectcomp> objects_;
代码中有一段看起来像这样(p_q 是一对多集迭代器,很抱歉那条讨厌的线,迫不及待地想用 auto 替换它,哈哈):
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 也不起作用)