Имеет ли смысл передавать обратные итераторы в std :: any_of и тому подобное? - PullRequest
3 голосов
/ 06 марта 2020

Я хочу проверить, существует ли значение в векторе. Это наиболее вероятно в конце вектора , имеет ли смысл использовать обратные итераторы, как это:

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-l oop?

, это для c ++ 11 / c ++ 14

1 Ответ

2 голосов
/ 06 марта 2020

Если элемент, вероятно, в конце.

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

имеет больше смысла и будет работать правильно.

...