C++:erase删除容器中元素
#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>vec;vector<i...
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vector<int>::iterator iter;
for ( int i = 0; i < 10; i++ )
{
vec.push_back( i );
}
for ( iter = vec.begin(); iter != vec.end(); )
{
if ( *iter == 3 )
{
vec.erase( iter );
}
else
{
++iter;
}
}
cout << "剩余元素:" << endl;
for ( iter = vec.begin(); iter != vec.end(); ++iter )
{
cout << *iter << " ";
}
cout << endl;
return 0;
}
这段程序很简单:
原来存的是 0 1 2 3 4 5 6 7 8 9
剩余元素是 0 1 2 4 5 6 7 8 9
但是索引3的位置的值并没有被删除 而只是变成4了啊
也就是删除之后这10个空间的值分别是 0 1 2 4 4 5 6 7 8 9 这样算删除了么?
是不是这样用迭代器访问不到了 但是按索引访问还是能访问到呢? 展开
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vector<int>::iterator iter;
for ( int i = 0; i < 10; i++ )
{
vec.push_back( i );
}
for ( iter = vec.begin(); iter != vec.end(); )
{
if ( *iter == 3 )
{
vec.erase( iter );
}
else
{
++iter;
}
}
cout << "剩余元素:" << endl;
for ( iter = vec.begin(); iter != vec.end(); ++iter )
{
cout << *iter << " ";
}
cout << endl;
return 0;
}
这段程序很简单:
原来存的是 0 1 2 3 4 5 6 7 8 9
剩余元素是 0 1 2 4 5 6 7 8 9
但是索引3的位置的值并没有被删除 而只是变成4了啊
也就是删除之后这10个空间的值分别是 0 1 2 4 4 5 6 7 8 9 这样算删除了么?
是不是这样用迭代器访问不到了 但是按索引访问还是能访问到呢? 展开
2个回答
展开全部
erase()函数的功能是用来删除容器中的元素。
函数原型:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string& erase(size_type p0=0,size_type n=np);
删除某个容器里的某个元素:c.erase(T);
链表容器以list为例,执行container.erase(it)。
list<int>::iterator it;
for (it = lt.begin(); it != lt.end(); ) {
if (*it % 2 == 0)
lt.erase(it++);
else
++it;
}
函数原型:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string& erase(size_type p0=0,size_type n=np);
删除某个容器里的某个元素:c.erase(T);
链表容器以list为例,执行container.erase(it)。
list<int>::iterator it;
for (it = lt.begin(); it != lt.end(); ) {
if (*it % 2 == 0)
lt.erase(it++);
else
++it;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询