【发布时间】:2021-03-18 02:41:54
【问题描述】:
有没有办法返回序列的第一个迭代器之间的距离,如果它包含在序列中,它会产生子序列的开始?
我知道there is std::includes 如果一个序列是另一个序列的子序列,它会返回true。它可以采用Compare 对象。
我的第一个猜测是每次找到子序列的开头时都有一个对象来增加捕获的迭代器(在 lambda 内)。
但后来我意识到这两个序列都必须排序,Compare 对象必须在a < b 上返回true。
这可以使用 std 算法库来完成吗?
【问题讨论】:
-
只是检查:您的序列已排序?
-
@MarcGlisse 没有。我正在搜索接收到的字节数组的迭代器,消息头从这里开始。
-
“序列的第一个迭代器,如果它包含在序列中,它会产生子序列的开始”是什么意思?如果您提供一个清晰、简洁的示例来说明您正在寻找的内容,将会有所帮助。
-
@SamVarshavchik Jarod42 已回答。我的意思是我需要找到一个序列的迭代器,如果子序列包含在其中,则从该迭代器开始。
std::search似乎是我要找的。span>
标签: c++ algorithm c++11 c++-standard-library subsequence