c++ - 如何(如果满足谓词从容器中移除?

标签 c++ stl containers move-semantics stl-algorithm

如何使用 STL 算法模块将元素 move 到 aux_list 中?

std::remove_copy_if( list.begin( ), list.end( ), std::back_inserter( aux_list ),
                     []( const value_type& item_ptr )
                     {
                         return !item_ptr->is_valid( );
                     } );

最佳答案

使用move iterators :

std::remove_copy_if(
    std::make_move_iterator(list.begin()),
    std::make_move_iterator(list.end()),
    std::back_inserter(aux_list),
    [](const value_type& item_ptr) { return !item_ptr->valid(); });

请注意,元素仍然全部存在于 list 中 - 它们实际上并未被删除(这是一个奇怪的命名算法 - 将其视为 copy_unless())。所以现在你将有一堆处于未指定状态的元素。

关于c++ - 如何(如果满足谓词从容器中移除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40679780/

相关文章:

c++ - 为什么当 popen() 中的命令失败时返回的 FILE* 保留数据

java - SWIG 在为 Java 包装 C++ 时显示错误

c++ - 使用std::string打开文件

docker - Kubernetes - 如何制作简单的 Linux 容器镜像而无需永久运行应用程序

c++ - 查找返回 6 的字符串长度太高的递归函数?

C++使用相同的代码循环遍历对象和指针

c++ - STL 中的自由函数是否需要 namespace ?

C++ 无序映射常量时间访问?

C++ 设计 : container of instances and pointers

docker - Mesos和Marathon关于Docker的局限性