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++ 算法