简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++之std::search应用实例
在C++中,std::search
是一个算法函数,用于在一个序列中搜索指定的子序列,并返回第一次出现该子序列的位置。
std::search
函数的用法如下:
template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,
ForwardIterator2 first2, ForwardIterator2 last2);
其中,first1
和last1
表示要搜索的主序列的起始位置和结束位置;first2
和last2
表示要搜索的子序列的起始位置和结束位置。
std::search
函数会从主序列中的first1
位置开始,按顺序逐个比较与子序列中的first2
位置开始对应的元素,直到子序列中的元素全部匹配或者到达主序列的last1
位置。如果找到了匹配的子序列,函数会返回子序列在主序列中的起始位置,否则返回last1
。
2.应用实例
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};
std::vector<int> sub = {3, 4, 5};
auto result = std::search(vec.begin(), vec.end(), sub.begin(), sub.end());
if (result != vec.end()) {
std::cout << "子序列出现在主序列中的位置:" << std::distance(vec.begin(), result) << std::endl;
} else {
std::cout << "未找到子序列" << std::endl;
}
return 0;
}