我是靠谱客的博主 矮小天空,最近开发中收集的这篇文章主要介绍关于STL中的erase操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部