我想检查 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;
});
更有意义,并且可以正常工作。