vector的erase
vector的erase函数是用来从vector中删除指定元素或一定范围的元素的。
它有两种使用方式:
删除单个元素:
vector<int> nums = {1, 2, 3, 4, 5}; nums.erase(nums.begin() + 2); // 删除索引为2的元素,即3
删除一定范围的元素:
vector<int> nums = {1, 2, 3, 4, 5}; nums.erase(nums.begin() + 1, nums.begin() + 4); // 删除索引为1到3之间的元素,即2、3、4
注意:erase函数会改变vector的大小,删除元素后,后面的元素会向前移动填补空位。
此外,还有一种更高效的删除方式是使用remove-erase惯用法,可以将需要删除的元素移到容器末尾,并使用erase函数删除末尾的元素。这样可以减少移动元素的次数,提高效率。示例如下:
vector<int> nums = {1, 2, 3, 4, 5};
nums.erase(remove(nums.begin(), nums.end(), 3), nums.end()); // 删除所有值为3的元素
这样,所有值为3的元素会被移到末尾,再使用erase函数删除末尾的元素,即可完成删除操作。
vector erase
在C++中,vector的erase函数用于删除vector中的元素。它有两种形式:
- iterator erase(iterator position):删除指定位置的单个元素。2. iterator erase(iterator first, iterator last):删除指定范围内的一段元素。
在提供的引用中,第一个示例中使用的是第一种形式,即通过指定迭代器来删除元素,但这样做可能会导致迭代器失效,可能产生错误。为了避免这种情况,应该使用第二种形式,并将erase函数的返回值赋给迭代器,以保证迭代器的有效性。
所以正确的用法应该是:
for(vector
vector vector erase
vector
是 C++ 标准库中的容器,提供了动态数组的功能。erase
是 vector
容器中的一个成员函数,用于删除容器中的元素。
erase
函数有两种用法:
删除单个元素:
vec.erase(iterator)
,其中vec
是要操作的vector
容器,iterator
是指向要删除元素的迭代器。例如,删除
vec
中第一个元素可以使用vec.erase(vec.begin())
。删除一定范围内的元素:
vec.erase(startIterator, endIterator)
,其中startIterator
和endIterator
分别是指向要删除范围起始位置和结束位置的迭代器。例如,删除
vec
中从第二个元素到第四个元素的范围可以使用vec.erase(vec.begin() + 1, vec.begin() + 4)
。
需要注意的是,使用 erase
函数后,被删除元素之后的所有元素都会向前移动,所以迭代器也会失效。一般情况下,在使用 erase
函数后应该更新迭代器,以免出现错误。
希望这个解答能够帮到你!如果还有其他问题,请随时提问。
相关推荐















