【发布时间】:2013-03-21 20:43:05
【问题描述】:
我对 boost 和 c++ 进行了一些研究,但找不到与我的问题相关的任何内容。是否有实现 lastIndexOf 的boost 库或STL 函数?
【问题讨论】:
标签: c++ boost c++11 lastindexof
我对 boost 和 c++ 进行了一些研究,但找不到与我的问题相关的任何内容。是否有实现 lastIndexOf 的boost 库或STL 函数?
【问题讨论】:
标签: c++ boost c++11 lastindexof
看起来你可能想要std::string::find_last_of。
查找与给定字符序列中的一个字符相等的最后一个字符。返回找到的字符的位置,如果没有找到这样的字符,则返回 npos。
编辑:
另见 hmjd 的回答。 find_last_of 和 rfind 之间存在差异,具体取决于您搜索的是单个字符、多个可能字符之一还是子字符串。
【讨论】:
std::string 具有成员函数rfind(),它从末尾开始搜索,如果找到则返回索引,否则返回std::string::npos。从链接的参考页面:
查找等于给定字符序列的最后一个子字符串。
【讨论】:
当然,您可以将std::find 与reverse_iterators 一起使用。例如,您有一个整数向量,并且您想找到其中的最后 5 个。你会的
auto it = std::find(v.rbegin(), v.rend(), 5);
如果你想要索引本身,那么你可以从迭代器中得到它
int index = std::distance(v.begin(), (it+1).base());
【讨论】: