一系列布尔值的表达方式是什么?

时间:2019-05-24 13:18:56

标签: c++ algorithm c++17

我最近遇到了一种情况,我需要将一系列的布尔值“或”在一起。

一个例子可能是std::vector<bool> bools;

我想出了一些将它们全部组合在一起的不同方法:

std::any_of(bools.begin(), bools.end(), [](bool x) { return x; } )

std::find(bools.begin(), bools.end(), true) != bools.end() 

std::accumulate(bools.begin(), bools.end(), false, std::logical_or);

std::accumulate(bools.begin(), bools.end(), 0) != 0;

如果长度是固定的,那么我可以使用具有std::bitset功能的any-但这只是一个选择。

在所有这些方法中,它们都不是非常直观的,或者在这里并没有真正表达出意图(以较小的方式,它们都显示了某种“ WTF?代码”)

这种情况具有讽刺意味的是,对于,我们确实有,相比之下,它们简单而富有表现力:

(bools || ...)

注意:我确实有dataset,其中包含范围库,但AFAIK并不能真正缓解此问题。

0 个答案:

没有答案