C++ vector之删除元素
---- 向量容器vector的成员函数pop_back()可以删除最后一个元素.
---- 而函数erase()可以删除由一个iterator指出的元素,也可以删除一个指定范围的元素。
---- 还可以采用通用算法remove()来删除vector容器中的元素.
---- 不同的是:采用remove一般情况下不会改变容器的大小,而pop_back()与erase()等成员函数会改变容器的大小。
1、pop_back()
void pop_back();
Delete last element
Removes the last element in the vector, effectively reducing the container size by one.
This destroys the removed element.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
int sum(0);
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
while(!vec.empty())
{
sum += vec.back();
vec.pop_back();
}
cout<<"vec.size()="<<vec.size()<<endl;
cout<<"sum = "<<sum<<endl;
system("pause");
return 0;
}
0
60
2、erase()
C++98
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
C++11
iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);
删除指定位置的一个元素或删除指定范围内的元素
Removes from the vector either a single element (position) or a range of elements ([first,last)). 包括first,不包括last。
This effectively reduces the container size by the number of elements removed, which are destroyed.
会减小容器的容量。迭代器用于erase删除元素后,其后会失效,即不能再用该迭代器操作向量。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
}
vec.erase(vec.begin()+5);//erase the 6th element
vec.erase(vec.begin(),vec.begin()+3);
for(int i=0;i<vec.size();i++)
{
cout<<vec[i]<<' ';
}
cout<<endl;
system("pause");
return 0;
}
//输出3 4 6 7 8 9
3、remove() 不建议使用
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
vec.push_back(100);
vec.push_back(300);
vec.push_back(300);
vec.push_back(300);
vec.push_back(300);
vec.push_back(500);
cout<<&vec<<endl;
vector<int>::iterator itor;
for(itor=vec.begin();itor!=vec.end();itor++)
{
if(*itor==300)
{
itor=vec.erase(itor);
}
}
for(itor=vec.begin();itor!=vec.end();itor++)
{
cout<<*itor<<" ";
}
system("pause");
return 0;
}
更多推荐
所有评论(0)