C++ 遍历迭代器并删除元素:使用 erase() 函数实现条件删除

在遍历迭代器的过程中,如果需要达到某个条件时删除元素,可以使用 'erase()' 函数结合迭代器来实现。

以下是一个示例代码,演示了如何在遍历 'std::vector' 的迭代器时,达到特定条件时删除元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> nums = {10, 20, 30, 40, 50};

    // 遍历向量的迭代器并删除符合条件的元素
    for (auto it = nums.begin(); it != nums.end();) {
        if (*it > 30) {
            it = nums.erase(it); // 删除符合条件的元素,并返回下一个元素的迭代器
        } else {
            ++it; // 继续遍历下一个元素
        }    
    }

    // 打印剩余元素
    std::cout << "Updated vector: ";
    for (const auto& num : nums) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上述示例中,我们创建了一个 'std::vector' 对象 'nums',并初始化了一些元素。然后,使用迭代器遍历 'nums',并在遍历过程中检查每个元素是否大于 30。如果满足条件,我们使用 'erase()' 函数删除该元素,并将迭代器设置为删除后的下一个元素的迭代器;否则,我们只是将迭代器推进到下一个位置。

需要注意的是,当使用 'erase()' 函数删除元素后,被删除元素之后的元素会自动向前移动,容器的大小也会相应减小。在删除元素后,迭代器会指向删除后的下一个元素,所以不需要再进行自增操作。

希望以上示例代码能够解决你的问题!如果你还有其他关于迭代器或 C++ 的问题,请随时提问。

C++ 遍历迭代器并删除元素:使用 erase() 函数实现条件删除

原文地址: https://www.cveoy.top/t/topic/Sg2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录