。
search是C++标准库中的一个算法,用于在指定范围内搜索某个值或一组值的出现。它的函数签名如下:
template< class ForwardIt1, class ForwardIt2 >
ForwardIt1 search( ForwardIt1 first, ForwardIt1 last, ForwardIt2 s_first, ForwardIt2 s_last );
参数说明:
first
和last
是表示搜索范围的迭代器,搜索范围为[first, last)。s_first
和s_last
是表示要搜索的值的范围的迭代器,搜索范围为[s_first, s_last)。search函数会在[first, last)范围内搜索[s_first, s_last)范围的值,并返回第一次出现的位置的迭代器。如果找不到匹配的值,则返回last。
示例代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<int> searchValues = {3, 4, 5};
auto result = std::search(numbers.begin(), numbers.end(), searchValues.begin(), searchValues.end());
if (result != numbers.end()) {
std::cout << "Found at position: " << std::distance(numbers.begin(), result) << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
输出结果为:
Found at position: 2
在这个例子中,我们在numbers向量中搜索searchValues向量的值。由于searchValues的值[3, 4, 5]在numbers中的位置是[2, 3, 4],所以搜索结果为2,即第一个匹配的位置。
std::advance是C++标准库中的一个函数模板,用于将迭代器向前移动指定的距离。它的函数签名如下:
template< class InputIt, class Distance >
void advance( InputIt& it, Distance n );
参数说明:
it
是要移动的迭代器。n
是要移动的距离。示例代码如下:
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
auto it = numbers.begin();
std::advance(it, 2);
std::cout << "Value at position 2: " << *it << std::endl;
return 0;
}
输出结果为:
Value at position 2: 3
在这个例子中,我们将numbers.begin()迭代器向前移动2个位置,即指向了numbers中的第3个元素,输出结果为3。
综上所述,search函数用于在指定范围内搜索某个值或一组值的出现,并返回第一次出现的位置的迭代器。std::advance函数用于将迭代器向前移动指定的距离。
领取专属 10元无门槛券
手把手带您无忧上云