C++学习笔记(25):常用查找算法

0 阅读2分钟

算法简介:

image.png

find

功能:查找指定元素,找到返回指定元素的迭代器,找不到就返回结束迭代器end()

image.png

image.png

image.png

find_if

按条件查找元素 image.png

  • 功能:根据自定义条件查找第一个匹配元素。
  • 参数: find_if(起始迭代器, 结束迭代器, 谓词) 
  • 返回值:找到则返回对应迭代器,没找到返回 end() 。
  • 示例:

cpp

auto it = find_if(v.begin(), v.end(), [](int val) {
return val > 3; // 找大于3的元素
});

 

 

adjacent_find

  • 功能:查找容器中相邻且相等的元素对。

  • 参数: adjacent_find(起始迭代器, 结束迭代器) 

  • 返回值:找到则返回第一个元素的迭代器,没找到返回 end() 。

  • 示例:

      vector<int> v = {1,2,2,3,4};
    
      auto it = adjacent_find(v.begin(), v.end()); // 找到第二个2的迭代器
    

 

 

binary_search

  • 功能:在有序容器中快速查找指定值(二分查找)。

  • 参数: binary_search(起始迭代器, 结束迭代器, 目标值) 

  • 返回值:找到返回 true ,没找到返回 false 。

  • 注意:容器必须是有序的,否则结果不可靠。

  • 示例:

      bool exists = binary_search(v.begin(), v.end(), 3);
    

 

 

count

  • 功能:统计容器中指定值出现的次数。

  • 参数: count(起始迭代器, 结束迭代器, 目标值) 

  • 返回值:返回匹配元素的数量。

  • 示例:

      int num = count(v.begin(), v.end(), 2);
    

 

 

count_if

  • 功能:根据自定义条件统计匹配元素的数量。

  • 参数: count_if(起始迭代器, 结束迭代器, 谓词) 

  • 返回值:返回匹配元素的数量。

  • 示例:

      int num = count_if(v.begin(), v.end(), [](int val) {
      return val > 2; // 统计大于2的元素数量
      });
    

 

 

总结对比

算法 核心用途 返回值类型

 find  查找指定值的第一个元素 迭代器 
 find_if  按条件查找第一个元素 迭代器 
 adjacent_find  查找相邻相等的元素对 迭代器 
 binary_search  有序容器中快速查找值 bool 
 count  统计指定值的出现次数 整数 
 count_if  按条件统计元素数量 整数