STL删除
时间: 2023-12-24 11:04:40 浏览: 24
STL中提供了两种删除元素的方法:erase() 和 remove()。
1. erase() 方法
erase() 方法可以用来删除迭代器所指向的元素。该方法有两个重载版本:
- erase(iterator position):删除指定位置上的元素。
- erase(iterator first, iterator last):删除从 first 到 last 范围内的元素。
例如,以下代码删除了 vector 中第二个元素:
```c++
vector<int> nums = {1, 2, 3, 4, 5};
nums.erase(nums.begin() + 1);
```
2. remove() 方法
remove() 方法可以用来删除容器中指定值的元素。该方法有一个重载版本:
- remove(first, last, value):删除从 first 到 last 范围内值为 value 的元素,并返回删除后的迭代器。
该方法并不会真正删除元素,而是将要删除的元素移到容器末尾,并返回指向这个末尾的迭代器。因此,需要使用容器提供的 erase() 方法来真正删除这些元素。
例如,以下代码删除了 vector 中所有值为 2 的元素:
```c++
vector<int> nums = {1, 2, 3, 2, 4, 2, 5};
nums.erase(remove(nums.begin(), nums.end(), 2), nums.end());
```
注意,remove() 方法只能用于顺序容器,如 vector、deque、list 等,而不能用于关联容器,如 set、map 等。因为关联容器中的元素是有序的,删除元素可能会破坏这种有序性。