概述
vector容器使用erase删除操作不仅会使指向的被删元素的迭代器失效,而且删除后里面的迭代器也会失效,所以不能使用erase(it++)的方法,
但是STL这么成熟的技术,总得有办法使用迭代器向下遍历,如此就的找方法,erase的返回值为下一个有效的迭代器,
vector<int> vecData;
<span style="white-space:pre"> </span>for (int i = 0; i < 5; ++i)
<span style="white-space:pre"> </span>{
<span style="white-space:pre">
</span>vecData.push_back(i);
<span style="white-space:pre"> </span>}
vector<int>::iterator it = vecData.begin();
for (; it != vecData.end(); ++it)
{
if (*it == 3)
{
it = vecData.erase(it);
}
}
for (int i = 0; i <vecData.size(); ++i)
{
cout << vecData[i] << endl;
}
map容器的操作就正好和vector容器相反,调用erase后返回的是void,
map<int, int> mapData;
for (int i = 0; i < 5; ++i )
{
mapData.insert(make_pair(i, i));
}
map<int, int>::iterator it = mapData.begin();
while(it != mapData.end())
{
if (*it == 3)
{
mapData.erase(it++);
break;
}
++it;
}
最后
以上就是矮小天空为你收集整理的关于STL中的erase操作的全部内容,希望文章能够帮你解决关于STL中的erase操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复