vector erase删除指定元素
时间: 2023-11-26 07:02:56 浏览: 47
在C++的vector中,可以使用erase()函数来删除指定元素。erase()函数有两种重载形式:
1. iterator erase(iterator position):删除指定位置的元素。
2. iterator erase(iterator first, iterator last):删除指定范围内的元素。
这两个函数都会返回一个指向删除元素(或范围)的下一个元素的迭代器。
需要注意的是,使用erase()函数删除元素后,vector的size()会相应地减小。
相关问题
vector erase函数删除元素的原理
vector的erase函数用于删除指定位置的元素,其原理是将指定位置后面的所有元素向前移动,覆盖被删除元素的位置。具体步骤如下:
1. 首先,erase函数会检查待删除位置的合法性,确保待删除的位置在vector的有效范围内。
2. 接着,erase函数会将待删除位置之后的所有元素向前移动,覆盖待删除的元素。这个过程可以通过将每一个元素赋值给其前一个位置来实现。
3. 最后,erase函数会修改vector的大小,使其减少一个元素。
需要注意的是,erase函数在删除元素后,会导致原来位于被删除元素后面的所有迭代器、引用和指针都失效,因为元素的移动改变了它们对应的位置。因此,在使用erase函数后要小心处理相关的迭代器和引用。
vector如何删除指定元素
如果你使用的是 C++ 的 STL 中的 vector,可以使用 erase() 函数来删除指定元素。erase() 函数有两种用法:
1. 删除单个元素:erase() 函数接受一个迭代器,表示要删除的元素的位置,例如:
```
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // 删除第三个元素
vec.erase(it);
```
2. 删除一段元素:erase() 函数可以接受两个迭代器,表示要删除的元素的范围,例如:
```
vector<int> vec = {1, 2, 3, 4, 5};
auto it1 = vec.begin() + 1; // 删除第二个到第四个元素
auto it2 = vec.begin() + 4;
vec.erase(it1, it2);
```
注意:使用 erase() 函数删除元素之后,vector 的大小会相应地减小。