STL vector删除元素

STL vector删除元素教程

如果我们需要删除 STL 中的 vector 容器中的元素,我们除了可以使用 vector 本身的函数,还可以使用一些全局函数。

STL vector删除元素详解

语法

函数 功能
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),但不是改变其容量。

案例

vector pop_back

使用 pop_back 给 vector 删除元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "www.haicoder.net"}; vec.pop_back(); for (auto&& value : vec) { cout << value << " "; } cout << endl; vec.pop_back(); for (auto&& value : vec) { cout << value << " "; } cout << endl; return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ vector.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

34_C STL vector删除元素.png

我们看到,我们使用了 vector 的 pop_back 删除了最后一个元素。

vector erase

使用 erase 给 vector 删除元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "www.haicoder.net"}; vec.erase(vec.begin(), vec.begin()+1); for (auto&& value : vec) { cout << value << " "; } cout << endl; vec.erase(vec.begin(), vec.begin()+1); for (auto&& value : vec) { cout << value << " "; } cout << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

35_C STL vector删除元素.png

我们看到,我们使用了 vector 的 erase 加上迭代器删除了 vector 的元素。

vector clear

使用 clear 清空 vector 元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<string> vec{"Hello", "World", "HaiCoder", "www.haicoder.net"}; vec.clear(); cout << "Size = " << vec.size() << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

36_C STL vector删除元素.png

我们看到,我们使用了 vector 的 clear 方法清空了 vector 的元素。

STL vector删除元素总结

如果我们需要删除 STL 中的 vector 容器中的元素,我们除了可以使用 vector 本身的函数,还可以使用一些全局函数。