boost — Java-подобный lastIndexOf в переполнении стека

Я провел некоторое исследование над бустом и с ++, но не смог найти что-то подходящее для моего вопроса. Есть ли библиотека повышения или функция STL, которая реализует LastIndexOf?

1

Решение

std::string имеет функцию-член rfind() который ищет с конца и возвращает индекс, если найден или std::string::npos если не. Со ссылочной страницы:

Находит последнюю подстроку, равную данной последовательности символов.

5

Другие решения

Похоже, вы могли бы хотеть std::string::find_last_of.

Находит последний символ, равный одному из символов в данной последовательности символов. Возвращает позицию найденного символа или npos, если такой символ не найден.

Редактировать:

Также см. Ответ hmjd. Есть различия между find_last_of а также rfind в зависимости от того, ищете ли вы один символ, один из множества возможных символов или подстроку.

6

Конечно, вы можете использовать std::find с reverse_iterators. Например, у вас есть вектор целых чисел, и вы хотите найти в нем последние 5. Ты сделаешь

auto it = std::find(v.rbegin(), v.rend(), 5);

Если вы хотите индекс как таковой, то вы можете получить его из итератора

int index = std::distance(v.begin(), (it+1).base());
4
По вопросам рекламы [email protected]