| 函数 | 功能 |
|---|---|
| pop_back() | 删除 vector 容器中最后一个元素,该容器的大小(size)会减 1,但容量(capacity)不会发生改变。 |
| erase(pos) | 删除 vector 容器中 pos 迭代器指定位置处的元素,并返回指向被删除元素下一个位置元素的迭代器。该容器的大小(size)会减 1,但容量(capacity)不会发生改变。 |
| swap(beg)、pop_back() | 先调用 swap() 函数交换要删除的目标元素和容器最后一个元素的位置,然后使用 pop_back() 删除该目标元素。 |
| erase(beg,end) | 删除 vector 容器中位于迭代器 [beg,end)指定区域内的所有元素,并返回指向被删除区域下一个位置元素的迭代器。该容器的大小(size)会减小,但容量(capacity)不会发生改变。 |
| remove() | 删除容器中所有和指定元素值相等的元素,并返回指向最后一个元素下一个位置的迭代器。值得一提的是,调用该函数不会改变容器的大小和容量。 |
| clear() | 删除 vector 容器中所有的元素,使其变成空的 vector 容器。该函数会改变 vector 的大小(变为 0),但不是改变其容量。 |
#include#include using namespace std; int main() { vector demo{ 1,2,3,4,5 }; demo.pop_back(); //输出 dmeo 容器新的size cout << "size is :" << demo.size() << endl; //输出 demo 容器新的容量 cout << "capacity is :" << demo.capacity() << endl; for (int i = 0; i < demo.size(); i++) { cout << demo[i] << " "; } return 0; }
结果如下: 相比原 demo 容器,新的 demo 容器删除了最后一个元素 5,容器的大小减了 1,但容量没变
size is :4 capacity is :5 1 2 3 42. erase()函数
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
#include#include using namespace std; int main () { string str ("This is an example phrase."); string::iterator it; // 第(1)种用法 str.erase (10,8); cout << str << endl; // "This is an phrase." // 第(2)种用法 it=str.begin()+9; str.erase (it); cout << str << endl; // "This is a phrase." // 第(3)种用法 str.erase (str.begin()+5, str.end()-7); cout << str << endl; // "This phrase." return 0; }
#include#include using namespace std; int main() { vector demo{ 1,2,3,4,5 }; auto iter = demo.erase(demo.begin() + 1);//删除元素 2 //输出 dmeo 容器新的size cout << "size is :" << demo.size() << endl; //输出 demo 容器新的容量 cout << "capacity is :" << demo.capacity() << endl; for (int i = 0; i < demo.size(); i++) { cout << demo[i] << " "; } //iter迭代器指向元素 3 cout << endl << *iter << endl; return 0; }
运行结果为 erase() 函数在删除元素时,会将删除位置后续的元素陆续前移,将容器的大小减 1。
size is :4 capacity is :5 1 3 4 5 3
如果不在意容器中元素的排列顺序,可以结合 swap() 和 pop_back() 函数,同样可以实现删除容器中指定位置元素的目的。
#include#include #include using namespace std; int main() { vector demo{ 1,2,3,4,5 }; //交换要删除元素和最后一个元素的位置 swap(*(std::begin(demo)+1),*(std::end(demo)-1));//等同于 swap(demo[1],demo[4]) //交换位置后的demo容器 for (int i = 0; i < demo.size(); i++) { cout << demo[i] << " "; } demo.pop_back(); cout << endl << "size is :" << demo.size() << endl; cout << "capacity is :" << demo.capacity() << endl; //输出demo 容器中剩余的元素 for (int i = 0; i < demo.size(); i++) { cout << demo[i] << " "; } return 0; }
运行结果为:
1 5 3 4 2 size is :4 capacity is :5 1 5 3 43. clear () 函数
如果想删除容器中所有的元素,则可以使用 clear() 成员函数,例如:
#include#include #include using namespace std; int main() { vector demo{ 1,3,3,4,3,5 }; //交换要删除元素和最后一个元素的位置 demo.clear(); cout << "size is :" << demo.size() << endl; cout << "capacity is :" << demo.capacity() << endl; return 0; }
运行结果
size is :0 capacity is :6



