我想检查 vector 中是否存在值。在 vector 的末尾很可能是,使用这样的反向迭代器是否有意义:

std::vector<int> v{};
//... add a lot of values ...
const int valueToCheckFor{42};
if (std::any_of(v.crbegin(), v.crend(), [valueToCheckFor](const auto x){ return valueToCheckFor == x; }

或者是
if (std::any_of(v.cbegin(), v.cend(), [valueToCheckFor](const auto x){ return valueToCheckFor == x; }

一样,因为未指定std::any_of中的执行顺序,所以最好使用for循环?

这是为c++ 11 / c++ 14

最佳答案

如果元素可能在末尾。

std::any_of(v.crbegin(),
           v.crend(),
           [valueToCheckFor](const auto x)
           { return valueToCheckFor == x;
          });

更有意义,并且可以正常工作。

08-27 14:26