📅  最后修改于: 2023-12-03 15:13:57.800000             🧑  作者: Mango
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() + 1
和v.begin() + 3
来删除第二和第三个元素2和3。执行该操作后,向量的元素变为1, 4, 5。
删除全部元素使用了向量的clear()
函数,该函数可以清空整个容器。执行该操作后,向量的元素变为空。
erase()
函数是C++标准库vector
容器中用于删除元素的成员函数,它有两个重载形式,可以分别用于单个元素和多个元素的删除。当元素被删除后,它的位置会由后面的元素填充。如果删除的是向量的最后一个元素,则无需进行填充操作。