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