C++ remove_的一元谓词是否有副作用?

C++ remove_的一元谓词是否有副作用?,c++,stl,C++,Stl,如果这些没有修改容器? 例如,我想输出我要从向量中删除的所有整数(我不想使用多个过程:例如:分区+输出+擦除)。 撇开设计的不好不谈,这是否合法: v.erase(remove_if(v.begin(), v.end(), [] (const int i) -> bool { if (i%2==0)

如果这些没有修改容器? 例如,我想输出我要从向量中删除的所有整数(我不想使用多个过程:例如:分区+输出+擦除)。 撇开设计的不好不谈,这是否合法:

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());
v.erase(如果(v.begin(),v.end(),[](const int i)删除)->bool
{ 
如果(i%2==0)
{

CUT< P>标准确实保证了,所以你很好。但是我仍然认为它是坏的风格,除了调试。虽然< /P>我和一个C的粉丝争论过,所以你知道这是怎么回事……就像我说的,我会在实际代码中使用分区+ CUT+擦除……从某种意义上说,这只是一个性能问题:如果你认为分区+分区+擦除不好,请说我可以编辑QNo,分区,然后在擦除之前结束分区,这正是我要做的。