📜  从向量 c++ 中删除值(1)

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

从向量 C++ 中删除值
简介

在 C++ 中,向量是一种动态数组,可以方便地添加和删除元素。删除元素时,我们需要知道要删除的元素在向量中的位置。

删除指定位置的元素

要删除指定位置的元素,可以使用 erase 方法。该方法需要指定要删除的位置。例如,删除向量 vec 中的第三个元素,可以使用以下代码:

vec.erase(vec.begin() + 2);

其中,vec.begin() 返回向量 vec 的迭代器,添加数字 2 后,移动迭代器到第三个元素位置。即 vec.begin() + 2 表示向量中第三个元素的迭代器。erase 方法将删除该位置的元素。

删除指定元素

要删除指定元素,可以使用 erase 方法结合 find 方法。 find 方法需要指定要查找的元素,如果找到,将返回该元素在向量中的位置。如果未找到,将返回向量的尾部迭代器。

例如,删除向量 vec 中值为 5 的元素,可以使用以下代码:

auto it = find(vec.begin(), vec.end(), 5);
if (it != vec.end()) {
    vec.erase(it);
}

其中,find 方法返回类型为迭代器,表示查找到的元素位置或向量的尾部。

删除重复元素

要删除向量中的重复元素,可以使用 uniqueerase 方法。

unique 方法将删除相邻的重复元素,并返回指向新的末尾位置的迭代器。erase 方法将删除新的末尾位置到向量的末尾的所有元素。例如:

vec.erase(unique(vec.begin(), vec.end()), vec.end());

其中,vec.begin()vec.end() 分别指向向量的起始位置和末尾位置。

注意:使用 unique 方法前,需要对向量进行排序。

其他注意事项
  • 删除元素后,向量的大小将会减小,要注意循环中的索引位置。
  • 删除元素后,在使用迭代器时,要注意指向正确的位置。因为删除操作会使迭代器失效。
总结

C++ 中删除向量中的元素,可以使用 erase 方法结合迭代器或 find 方法。要删除重复元素,可以使用 unique 方法和 erase 方法。但要注意循环和迭代器的变化。