LINUX.ORG.RU

История изменений

Исправление BruteForce, (текущая версия) :

Если уже знаешь значение и оно уникально:

auto known_value{2};
auto i = std::find(std::begin(v), std::end(v), known_value);

Если знаешь значение и хочешь производительности (или гарантированно уникально только в последних двух элементах):

auto known_value{2};
auto i = std::find(std::rbegin(v), std::rend(v), known_value);

Если знаешь последнее значение и у тебя есть какой-то непонятный итератор:

auto known_value{3};
if (i == std::end(some_container))
        i = std::prev(i);
else
        while (*i != known_value)
                ++i;
i = std::prev(i);

Исправление BruteForce, :

Если уже знаешь значение и оно уникально:

auto known_value{2};
auto i = std::find(std::begin(v), std::end(v), known_value);

Если знаешь значение и хочешь производительности (или гарантированно уникально только в последних двух элементах):

auto known_value{2};
auto i = std::find(std::rbegin(v), std::rend(v), known_value);

Если знаешь последнее значение и у тебя есть какой-то непонятный итератор:

auto known_value{3};
while (*i != known_value)
        ++i;
i = std::prev(i);

Исходная версия BruteForce, :

Если уже знаешь значение и оно уникально:

auto known_value{2};
auto i = std::find(std::begin(v), std::end(v), known_value);

Если знаешь значение и хочешь производительности (или гарантированно уникально только в последних двух элементах):

auto known_value{2};
auto i = std::find(std::rbegin(v), std::rend(v), known_value);