我有一张在全局记忆中定义的地图.我正在迭代它,让我们说我在第三个元素.现在我正在调用另一个在同一个地图上生成自己的迭代器的函数,但它可能会删除地图中的第4个或第5个......元素.我的问题是,当我从该函数返回并继续迭代地图时(我提醒你我在第3个元素中),我的迭代器可以无效还是安全?
对不起,我不能附上代码,这是非常长的.
谢谢
编辑:我的问题是这样的:
map<string,string> mapi;
void er() {
mapi.erase("t");
}
int main() {
mapi.insert(pair<string,string>("w","a"));
mapi.insert(pair<string,string>("e","a"));
mapi.insert(pair<string,string>("r","a"));
mapi.insert(pair<string,string>("t","a"));
mapi.insert(pair<string,string>("A","a"));
mapi.insert(pair<string,string>("u","a"));
mapi.insert(pair<string,string>("C","a"));
map<string,string>::iterator it;
for (it=mapi.begin(); it!=mapi.end(); it++) {
cout << it->first << endl;
if (it->first=="t")
er();
}
Run Code Online (Sandbox Code Playgroud)
}
在这种情况下,我擦除相同的元素 - valgrind说它是一个错误.但是当我删除其他元素时似乎工作正常.
来自http://www.sgi.com/tech/stl/Map.html:
从地图中删除元素也不会使任何迭代器无效,当然,除了实际指向正在被删除的元素的迭代器之外.
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |