如何在std::remove后处理被移除的元素

   2024-10-01 8850
核心提示:在std::remove函数中,并不会真正移除元素,而是将要移除的元素移到容器的末尾,并返回一个指向新的逻辑结尾的迭代器。如果要处

std::remove函数中,并不会真正移除元素,而是将要移除的元素移到容器的末尾,并返回一个指向新的逻辑结尾的迭代器。如果要处理被移除的元素,可以使用std::remove_if结合std::copy_if或者自定义的处理逻辑来实现。

以下是一种处理被移除的元素的方法:

#include <iostream>#include <algorithm>#include <vector>int main() {    std::vector<int> vec = {1, 2, 3, 4, 5};    int valueToRemove = 3;    auto it = std::remove(vec.begin(), vec.end(), valueToRemove);    // 使用std::copy_if将被移除的元素复制到一个新的容器    std::vector<int> removedElements;    std::copy_if(vec.begin(), it, std::back_inserter(removedElements), [=](int val) {        return val == valueToRemove;    });    // 打印原始容器    for (int i : vec) {        std::cout << i << " ";    }    std::cout << std::endl;    // 打印被移除的元素    for (int i : removedElements) {        std::cout << i << " ";    }    std::cout << std::endl;    return 0;}

在上面的代码中,我们先使用std::remove将要移除的元素移到容器的末尾,然后使用std::copy_if将被移除的元素复制到一个新的容器中。最后,打印原始容器和被移除的元素。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号