假设我们有两个范围r1 = [first1, last1)并且r2 = [first2, last2)
假设这r2是iff的一个子范围r1,存在这样的i>=0情况:
[first1 + i, first1 + i + last2 - first2)是一个有效范围
[0, last2 - first2)对于以下保持中的所有 j :
*(first1 + i + j) == *(first2 + j)
Run Code Online (Sandbox Code Playgroud)嵌套循环可以轻松确定 是否r2是 的子范围r1,甚至是一个对std::equal模板进行嵌套调用的循环。是否有更 STL 风格、更简洁的方式在 C++ 中表达相同的想法?C++0x 解决方案也受到欢迎。提前致谢。
我想std::search这就是你要找的。来自http://www.cplusplus.com/reference/algorithm/search/ [ std::search] "在范围 [first1,last1) 中搜索 [first2,last2) 定义的序列的第一次出现,并返回一个迭代器到其第一个元素。”