C++STL算法篇之查找算法(上)

简介: C++STL算法篇之查找算法

基本查找

find(区间查找)

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
  int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  vector<int> date;
  date.assign(arr, arr + 10);
  //assign()函数,为容器赋初值
  //将arr, arr + 10 区间的值赋给date
  auto it = find(date.begin(), date.end(), 3); 
  //find函数返回的类型是迭代器,这里使用auto推断比较方便
  //如果找到,返回这个数据所在的位置。如果找不到,那么返回这个区间末尾的位置
  if (it != date.end())
  {
    cout << *it << endl;
  }
  system("pause");
  return 0;
}

find_if(条件查找)

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
  int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  vector<int> date;
  date.assign(arr, arr + 10);
  //assign()函数,为容器赋初值
  //将arr, arr + 10 区间的值赋给date
   auto it = find_if(date.begin(), date.end(), [](int m) {return m > 3; });
  //这里使用lambda表达式作为find_if的条件。当然你也可以通过仿函数
  cout << *it << endl; //打印出第一个大于3的数
  system("pause");
  return 0;
}

find_first_of(查找区间第一次出现的值)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
  int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  vector<int> date;
  auto it3 = find_first_of(date.begin(), date.end(), temp, temp + 3);
  //在date这个容器里,寻
  cout << *it3 << endl;
  return 0;

adjacent_find(查找第一次重复的值)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
  vector<int> data = { 0, 1, 2, 3, 3, 6, 6 };
  auto it5 = adjacent_find(data.begin(), data.end());
  //返回第一个重复元素的地址
  cout << *it5 << endl;
  return 0;

search(子序列查找)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
  int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  vector<int> date;
  date.assign(arr, arr + 10);
  //assign()函数,为容器赋初值
  //将arr, arr + 10 区间的值赋给date
  int arr1[7] = { 0 ,1 , 2, 3 ,4, 5, 6 };
  int arr2[4] = { 0, 1, 2, 3 };
  auto it4 = search(arr1, arr1 + 7, arr2, arr2 + 4);
  //找arr1中是否有arr2的子串
  cout << *it4 << endl;
  return 0;
}

search_n(子序列查找出现的次数)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
  vector<int> data = { 0, 1, 2, 3, 3, 6, 6 };
  auto it6 = search_n(data.begin(), data.end(), 2, 3);
  //3出现2次的地方的迭代器
  cout << *it6 << endl;
  return 0;
}


相关文章
|
1月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
69 5
|
1月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
52 1
|
1月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
451 0
高精度算法(加、减、乘、除,使用c++实现)
|
1月前
|
算法 安全 Linux
【C++STL简介】——我与C++的不解之缘(八)
【C++STL简介】——我与C++的不解之缘(八)
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
22 0
|
1月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
1月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
1月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
1月前
|
人工智能 算法 BI
一篇带你速通差分算法(C/C++)
一篇带你速通差分算法(C/C++)
|
1月前
|
人工智能 算法 C++
一篇带你速通前缀和算法(C/C++)
一篇带你速通前缀和算法(C/C++)