C++ 算法 search() 函数
定义和用法
search() 函数在数据范围内搜索另一个数据范围指定的值序列,并返回指向匹配起始位置的迭代器。
数据范围通过迭代器指定。
实例
检查一个 vector 是否包含另一个 vector 的序列:
vector<int> numbers = {1, 7, 3, 5, 9, 2};
vector<int> target = {3, 5, 9};
auto it = search(numbers.begin(), numbers.end(), target.begin(), target.end());
if (it != numbers.end()) {
cout << "找到目标序列"; // 输出:找到目标序列
} else {
cout << "未找到目标序列";
}
语法
search(iterator start, iterator end, iterator search_start, iterator search_end);
参数
| 参数 | 描述 |
|---|---|
| start | 必需。指向被搜索数据范围起始位置的迭代器。 |
| end |
必需。指向被搜索数据范围结束位置的迭代器。 将搜索到该位置之前的元素。 |
| search_start | 必需。指向要搜索的值序列起始位置的迭代器。 |
| search_end |
必需。指向要搜索的值序列结束位置的迭代器。 将匹配到该位置之前的元素。 |
技术细节
| 返回: |
指向第一个匹配序列起始位置的迭代器。 若未找到匹配,则返回被搜索数据范围的 end 迭代器。 |
|---|
说明:
- 执行子序列匹配,时间复杂度 O(n*m)
- 若搜索空序列,总是返回 start 迭代器
- 可使用 search_n() 函数搜索重复值序列
相关页面
教程:C++ 数据结构
教程:C++ 迭代器
教程:C++ 算法