可以删除的一元谓词具有副作用

can unary predicate for remove_if have sideeffects?

本文关键字:谓词 一元 副作用 删除      更新时间:2023-10-16

如果那些arent修改容器?例如,我想输出我从向量中删除的所有ints(而且我不想使用多个通行证:例如:分区 输出 擦除)。除了设计恐怖,这是合法的:

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标准准确保证了谓词在每个元素上的一种应用,所以我很好,因为我不在乎订单...

标准确实确实保证了这一点,所以你很好。不过,除了调试外,我仍然会认为这是不好的样式。