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

📅  最后修改于: 2023-12-03 14:50:20.364000             🧑  作者: Mango

删除特定向量元素 in C++

在C++中,可以使用vector容器类来存储一组元素,并且可以通过使用索引来删除向量中的特定元素。下面将介绍几种删除特定向量元素的方法。

方法一:使用erase-remove习惯用法
#include <iostream>
#include <vector>
#include <algorithm>

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

    // 使用erase-remove习惯用法删除特定元素
    vec.erase(std::remove(vec.begin(), vec.end(), element), vec.end());

    // 打印修改后的向量
    for (const auto& num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的代码中,使用了erase-remove习惯用法来删除特定的元素。首先使用std::remove函数将要删除的元素移动到向量的末尾,然后使用erase函数删除末尾的元素。

输出结果为:1 2 4 5,已成功删除元素3。

方法二:使用循环删除特定元素
#include <iostream>
#include <vector>

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

    // 使用循环删除特定元素
    for (auto it = vec.begin(); it != vec.end(); ) {
        if (*it == element) {
            it = vec.erase(it);
        } else {
            ++it;
        }
    }

    // 打印修改后的向量
    for (const auto& num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的代码中,使用循环来遍历向量并删除特定的元素。如果找到要删除的元素,则调用erase函数删除,否则继续迭代。

输出结果与上述方法一相同:1 2 4 5

方法三:使用标准库函数remove_if
#include <iostream>
#include <vector>
#include <algorithm>

bool isToRemove(int num) {
    return num == 3;
}

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

    // 使用remove_if删除特定元素
    vec.erase(std::remove_if(vec.begin(), vec.end(), isToRemove), vec.end());

    // 打印修改后的向量
    for (const auto& num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的代码中,使用remove_if函数结合一个自定义的谓词函数isToRemove来删除特定的元素。谓词函数返回true表示需要删除元素。

输出结果与上述方法一和方法二相同:1 2 4 5

以上是在C++中删除特定向量元素的几种常见方法。根据具体的需求和习惯,你可以选择合适的方法来删除特定的元素。