📌  相关文章
📜  从向量中删除特定元素 c++ (1)

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

从向量中删除特定元素

在 C++ 中,我们可以使用标准库中的 vector 来存储和管理序列元素。有时候,我们需要从一个向量中删除一个特定的元素,这就需要用到向量的一些成员函数和算法。

下面是一些从向量中删除元素的方法,每个方法都有不同的应用场景,可以根据具体情况选择使用。

使用 erase 函数

erase 函数是向量中用于删除元素的一个成员函数,它可以接受一个迭代器作为参数,用来指定要删除哪个元素。下面是一个例子:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    v.erase(v.begin() + 2); // 删除第 3 个元素
    for (auto i : v) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

这个程序会输出 1 2 4 5,因为它删除了序列中的第 3 个元素 3,然后输出了剩余的元素。

使用 removeerase 算法

removeerase 是标准库中的两个算法函数,它们通常用于从容器中删除特定元素。这两个函数的组合可以删除向量中所有等于某个值的元素。例如:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 2, 3, 2, 4, 5, 2};
    auto iter = std::remove(v.begin(), v.end(), 2); // 移除所有等于 2 的元素
    v.erase(iter, v.end()); // 不需要的元素被移动到了向量的末尾,使用 erase 函数删除它们
    for (auto i : v) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

此程序会输出 1 3 4 5。我们可以看到,使用 remove 函数将其转换为以下序列 1 3 4 5 [2 2 2],然后使用 erase 删除不需要的部分。

使用 uniqueerase 算法

有时候,我们需要从一个向量中删除相邻的重复元素。这可以使用 uniqueerase 两个算法函数实现。例如:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {1, 1, 2, 2, 3, 3, 3, 4};
    auto iter = std::unique(v.begin(), v.end()); // 移除相邻的重复元素
    v.erase(iter, v.end());
    for (auto i : v) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

该程序将删除相邻的重复元素并输出序列 1 2 3 4

总结

以上就是几种在 C++ 中从向量中删除特定元素的方法。每个方法都有不同的应用场景,我们需要根据实际情况选择合适的方法。

注:本文所述的方法同样适用于其他 C++ 容器,例如 listdeque