对于空容器,std :: all_of()和std:none_of()都返回true。std :: all_of()和std:none_of()的空容器的好习语?
除了辩论这个概念方面,有人可以提出一个不要求总是检查容器是否为空并检查all_of或none_of的习惯用法吗?
这很麻烦,因为在两个算法中对一个空容器使用相同的谓词将指示谓词对于元素的ALL和NONE均为真。所以,你的(空)矢量是all_of“odd”,all_of“even”,none_of“odd”和none_of“even”。
在一个更实用的层面上,我正在考虑检查某个状态项的集合,就像任何“准备好处理”一样,并且期望一个空集合对应于“否,没有元素准备好被处理“。我知道我可以检查它是否是空的,但我正在寻找其他可能性。
有什么问题?即使你对(auto&e:range)进程(e)有'if(all_of(range,ready_for_processing))',那也没关系。 – ipc 2013-03-21 18:40:21
如果none_of对于空容器上的“准备处理”谓词产生true,这对我来说似乎是正确的答案。 – 2013-03-21 18:43:38
'all_of'是“对于S中的所有x,P(x)”。 'none_of'是“S,!P(x)”中的所有x。 “any_of”是“S中存在x,P(x)”。 'all_of'和'none_of'不是相互否定的 - 对于S中所有的x,'!'“,P(x)”是“存在x,!P(x)”(又名'any_of(... ,!P)'),'!none_of(...)'是'any_of(...)'。 – Yakk 2013-03-21 19:38:36