全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++的std::adjacent_find算法怎么用 查找容器中的相邻重复元素【STL算法】

std::adjacent_find用于查找容器中第一对相邻相等元素,返回指向首元素的迭代器;未找到则返回end(),适用于vector、list、array等支持前向迭代器的容器。

std::adjacent_find 用来在容器中找第一对相邻且相等的元素,返回指向第一个元素的迭代器;如果没找到,返回尾迭代器(如 end())。

基础用法:找默认相等的相邻元素

适用于所有支持前向迭代器的容器(vectorlistarray 等),默认用 operator== 比较:

  • 传入起始和结束迭代器
  • 返回值是迭代器,需检查是否等于 end()
  • 若找到,它指向重复对中的第一个元素
示例:
std::vector v = {1, 2, 3, 3, 4, 5};
auto it = std::adjacent_find(v.begin(), v.end());
if (it != v.end()) {
    std::cout << "重复起始位置: " << std::distance(v.begin(), it) 
              << ", 值为 " << *it << "\n"; // 输出:位置 2,值为 3
}

自定义判断逻辑:用谓词(Predicate)

第二个参数可传入二元谓词,用于自定义“相邻是否满足条件”:

  • 谓词接收两个相邻元素(a, b),返回 true 表示“匹配”
  • 常见用途:找相邻差值超过阈值、大小写忽略比较字符串、相邻递增等
示例:找相邻差大于 10 的整数对
std::vector v = {5, 8, 20, 22, 35};
auto it = std::adjacent_find(v.begin(), v.end(), 
    [](int a, int b) { return b - a > 10; });
// 找到 (8, 20),it 指向 8

注意边界与空容器

该算法要求至少两个元素才可能有“相邻对”,内部会自动处理:

  • 空容器或单元素容器 → 直接返回 end()
  • 不修改原容器,只读操作
  • 复杂度是线性:最多比较 last - first - 1

配合其他 STL 工具快速定位

常和 std::distance、范围 forerase 连用:

  • 获取下标位置:用 std::distance(begin(), it)
  • 删除首个相邻重复对:v.erase(it, it + 2)(确保 it + 2 有效)
  • 找全部重复对?需循环调用(每次从 it + 1 开始)


# c++  # Array  # for  # 字符串  # 循环  # operator  # 算法  # 迭代  # 第一个  # 适用于  # 自定义  # 值为  # 前向  # 最多  # 第二个  # 能有  # 首个 


相关文章: 无锡营销型网站制作公司,无锡网选车牌流程?  如何在万网开始建站?分步指南解析  网站设计制作企业有哪些,抖音官网主页怎么设置?  网站制作模板下载什么软件,ppt模板免费下载网站?  建站主机选购指南:核心配置与性价比推荐解析  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  定制建站流程步骤详解:一站式方案设计与开发指南  如何在IIS管理器中快速创建并配置网站?  ,有什么在线背英语单词效率比较高的网站?  香港服务器租用每月最低只需15元?  建站之星如何快速解决建站难题?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何选择域名并搭建高效网站?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  C#怎么使用委托和事件 C# delegate与event编程方法  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Android自定义控件实现温度旋转按钮效果  高端云建站费用究竟需要多少预算?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  网站制作新手教程,新手建设一个网站需要注意些什么?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  韩国服务器如何优化跨境访问实现高效连接?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  如何通过虚拟主机空间快速建站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何在Golang中指定模块版本_使用go.mod控制版本号  香港服务器WordPress建站指南:SEO优化与高效部署策略  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何通过虚拟机搭建网站?详细步骤解析  建站之星展会模板:智能建站与自助搭建高效解决方案  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站之星备案流程有哪些注意事项?  SQL查询语句优化的实用方法总结  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  专业网站建设制作报价,网页设计制作要考什么证?  如何选择适合PHP云建站的开源框架?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Python多线程使用规范_线程安全解析【教程】  建站之星后台密码如何安全设置与找回?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  c# 在ASP.NET Core中管理和取消后台任务  设计网站制作公司有哪些,制作网页教程?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  制作营销网站公司,淘特是干什么用的?  建站上市公司网站建设方案与SEO优化服务定制指南  东莞专业网站制作公司有哪些,东莞招聘网站哪个好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。