c++11 std::search的用法
时间: 2023-08-13 15:04:40 浏览: 67
C++11中的std::search函数用于在给定范围内搜索一个子序列的第一次出现位置。它的声明如下:
```cpp
template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
```
参数说明:
- `first1` 和 `last1` 是要搜索的范围,表示一个序列的首尾迭代器。
- `first2` 和 `last2` 是要搜索的子序列,表示另一个序列的首尾迭代器。
该函数返回一个指向范围中第一次出现子序列的位置的迭代器。如果没有找到子序列,则返回`last1`。
下面是一个简单的示例代码,演示了如何使用`std::search`函数来搜索子序列:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> sequence {1, 2, 3, 4, 5, 6, 7, 8, 9};
std::vector<int> subsequence {4, 5, 6};
auto it = std::search(sequence.begin(), sequence.end(),
subsequence.begin(), subsequence.end());
if (it != sequence.end()) {
std::cout << "Subsequence found at position: "
<< std::distance(sequence.begin(), it) << std::endl;
} else {
std::cout << "Subsequence not found" << std::endl;
}
return 0;
}
```
以上代码将输出 "Subsequence found at position: 3",表示子序列 [4, 5, 6] 在序列 [1, 2, 3, 4, 5, 6, 7, 8, 9] 中第一次出现的位置是索引为 3 的位置。
希望这个例子能够帮助你理解std::search函数的用法。
阅读全文