📜  C++ Vector.erase()函数(1)

📅  最后修改于: 2023-12-03 15:13:57.800000             🧑  作者: Mango

C++ Vector.erase()函数

erase()函数是C++标准库vector容器提供的一个成员函数,用于从向量中移除指定位置的一个或多个元素。

函数声明
iterator erase(const_iterator position);
iterator erase(const_iterator first, const_iterator last);

erase()函数有两个重载形式,分别用于删除单个元素和多个元素。

第一个重载形式erase(const_iterator position)只有一个参数,它指定了要删除元素的位置。该函数返回一个迭代器,它指向下一个元素的位置,如果该元素是向量的最后一个元素,则返回vector::end()

第二个重载形式erase(const_iterator first, const_iterator last)接受两个参数:第一个参数指定了要删除的第一个元素的位置,第二个参数指定了要删除操作的最后一个元素的下一个位置。该函数返回一个迭代器,它指向被删除元素后的第一个元素的位置,如果删除的是向量的最后一个元素,则返回vector::end()

示例
#include <iostream>
#include <vector>

int main() {
  std::vector<int> v{ 1, 2, 3, 4, 5 };

  // 删除向量中的第二个元素
  v.erase(v.begin() + 1);

  // 删除第二和第三个元素
  v.erase(v.begin() + 1, v.begin() + 3);

  // 删除向量中的全部元素
  v.clear();
  
  return 0;
}

在本示例中,我们创建了一个整型向量v,它包含了五个元素:1, 2, 3, 4, 5。接下来,我们演示了如何使用erase()函数分别删除单个元素、多个元素以及全部元素。

删除单个元素使用了第一个重载形式,它接受一个参数,表示要删除元素的位置。在这个示例中,我们使用了一个指向第二个元素的迭代器v.begin() + 1来删除第二个元素2。执行该操作后,向量的元素变为1, 3, 4, 5。

删除多个元素使用了第二个重载形式,它接受两个参数,分别表示要删除的元素范围的起始位置和结束位置(不包括该位置)。在这个示例中,我们使用了指向第二个和第三个元素的迭代器,即v.begin() + 1v.begin() + 3来删除第二和第三个元素2和3。执行该操作后,向量的元素变为1, 4, 5。

删除全部元素使用了向量的clear()函数,该函数可以清空整个容器。执行该操作后,向量的元素变为空。

总结

erase()函数是C++标准库vector容器中用于删除元素的成员函数,它有两个重载形式,可以分别用于单个元素和多个元素的删除。当元素被删除后,它的位置会由后面的元素填充。如果删除的是向量的最后一个元素,则无需进行填充操作。