c++ - remove_if 的一元谓词可以有副作用吗?

标签 c++ stl

如果那些没有修改容器? 例如,我想输出我从 vector 中删除的所有整数(我不想使用多次传递:例如:partition + output + erase)。 撇开设计恐怖不谈,这是合法的:

v.erase(remove_if(v.begin(), v.end(), [] (const int i) -> bool 
                                  { 
                                    if (i%2==0)
                                    {
                                       cout << i << endl;
                                       return true;
                                    }
                                    else return false;
                                   }, v.end());

AFAIK 标准保证在每个元素上只应用一次谓词,所以我很好,因为我不关心顺序......

最佳答案

标准确实保证了这一点,所以你没问题。不过,除了调试之外,我仍然认为它是糟糕的风格。

关于c++ - remove_if 的一元谓词可以有副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553503/

相关文章:

c++ - STL 算法如何独立于 Iterator 类型工作?

c++ - std::vector::insert,以 end 作为第一个参数调用它可以吗?

c++ - 关于 C++ try -catch

c++ - QListWidget 发送没有项目的 doubleClicked 信号

c++ - 如何将现有的 CMake git repo 作为子模块包含在我自己的 CMake 项目中?

c++ - 使用c++ STL的多维 vector 求解

c++ - Graphviz 作为 Windows 中的库

c++ - 图像指针窗口操作

c++ - 如何计算 vector 递归类型中的非空 vector

c++ - 转换多个迭代器元素