使用std :: all_of()和std:none_of()的空容器的好习惯用法?

Arb*_*est 3 c++ stl-algorithm c++11

对于空容器,std :: all_of()和std:none_of()都返回true.

除了辩论这个概念方面,有人可以提出一个成语,不要求总是检查容器是否为空并检查all_of或none_of?

这很麻烦,因为在空容器上的两个算法中使用相同的谓词将表明谓词对于ALL和NONE都是正确的.所以,你的(空)向量是all_of"odd",all_of"even",none_of"odd"和none_of"even".

在更实际的层面上,我正在考虑检查状态的项目集合,就像任何"准备好处理"一样,并期望空集合对应于"否,没有准备好处理的元素".我知道我可以检查它是否是空的,但我正在寻找其他可能性.

sth*_*sth 13

在更实际的层面上,我正在考虑检查状态的项目集合,就像任何"准备好处理"一样,并期望空集合对应于"否,没有准备好处理的元素".

这就是为什么返回空集合.std::any_of()false

如果问题是" 所有项目是否完成处理?",则预期答案将为"是,一切都已完成".如果首先没有任何项目要处理(就是这种std::all_of()情况).

同样,问题是"处理过程中没有发生错误吗?" 会回答"是的,没有错误." 为空列表(没有工作 - >没有错误).这是std::none_of()检查.