---- 向量容器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; }060
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; }