C++之std::search应用实例(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之std::search应用实例

在C++中,std::search是一个算法函数,用于在一个序列中搜索指定的子序列,并返回第一次出现该子序列的位置。

std::search函数的用法如下:

template <class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1,
                        ForwardIterator2 first2, ForwardIterator2 last2);

其中,first1last1表示要搜索的主序列的起始位置和结束位置;first2last2表示要搜索的子序列的起始位置和结束位置。

std::search函数会从主序列中的first1位置开始,按顺序逐个比较与子序列中的first2位置开始对应的元素,直到子序列中的元素全部匹配或者到达主序列的last1位置。如果找到了匹配的子序列,函数会返回子序列在主序列中的起始位置,否则返回last1

2.应用实例

#include 
#include 
#include 

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;
}

你可能感兴趣的:(C++入门系列,c++,开发语言)