Уже задавали этот вопрос и получил ответы о c ++ STL, но как насчет boost?
Это вопрос о повышении Finders. Если у вас есть ссылка на описываемые реализации библиотеки повышения, я был бы признателен за упрощение поиска библиотеки повышения для практических приложений.
Мой вопрос в том, какой бустер искатель больше всего относится к LastIndexOf?
Ну, во-первых, самый простой вариант, если вы собираетесь искать последнее вхождение подстроки, это использовать std::string::rfind
:
std::string str = "Hello, World!";
int index = str.rfind("o");
Если вам нужно использовать Boost, потому что вы хотите, чтобы он работал на общих диапазонах, используйте boost::algorithm::find_last
, Требуется два диапазона. Второй диапазон ищется в первом диапазоне.
std::string str = "Hello, World!";
iterator_range<std::string::iterator> it = find_last(str, "o");
int index = std::distance(str.begin(), it.begin());
Если вы действительно хотите использовать искатель, похоже, что вы ищете boost::algorithm::last_finder
, Искатели возвращают функциональный объект, который принимает два итератора в качестве аргументов. Функция возвращает iterator_range
Вы можете использовать это так:
auto finder = last_finder("o");
std::string str = "Hello, World!";
iterator_range<std::string::iterator> it = finder(str.begin(), str.end());
int index = std::distance(str.begin(), it.begin());
Других решений пока нет …