算法之旅,直奔<algorithm>之十六 find_end

实战c++中的vector系列--vector应用之STL的find、find_if、find_end、find_first_of、find_if_not(C++11) 使用vector容器,即避免不了进行查找,所以今天就罗列一些stl的find算法应用于vector中。find() Returns an iterator to the first element in the range [first,last) that compares equal to val. If no such element is found, the function retur 阅读详情

find_end(vs2010)

  • 引言
这是我学习总结<algorithm>的第十六篇。我是因为一个排序的实验结果,直奔<algorithm>C++库的,现在又仔细想想,我写那个排序算法,在实际当中会用自己的代码么?不会,只是能帮助自己了解的更彻底一点。
  • 作用
find_end的作用是在一段数据集合里找到可以匹配的指定一段数据集合的首地址,不过这个是从后往前找的。
  • 原型
template<class ForwardIterator1, class ForwardIterator2>
  ForwardIterator1 find_end (ForwardIterator1 first1, ForwardIterator1 last1,
                             ForwardIterator2 first2, ForwardIterator2 last2)
{
  if (first2==last2) return last1;  // specified in C++11

  ForwardIterator1 ret = last1;

  while (first1!=last1)
  {
    ForwardIterator1 it1 = first1;
    ForwardIterator2 it2 = first2;
    while (*it1==*it2) {    // or: while (pred(*it1,*it2)) for version (2)
        ++it1; ++it2;
        if (it2==last2) { ret=first1; break; }
        if (it1==last1) return ret;
    }
    ++first1;
  }
  return ret;
}
  • 实验
数据集合如下

匹配{1,2,3} ,返回的是第二个1的地址,
匹配{4,5,1},返回的是第一个4的地址。
  • 代码
test.cpp
#include <iostream>     // std::cout
#include <algorithm>    // std::find_end
#include <vector>       // std::vector

bool myfunction (int i, int j) 
{
	return (i==j);
}

int main () {
	int myints[] = {1,2,3,4,5,1,2,3,4,5};
	std::vector<int> haystack (myints,myints+10);

	int needle1[] = {1,2,3};

	// using default comparison:
	std::vector<int>::iterator it;
	it = std::find_end (haystack.begin(), haystack.end(), needle1, needle1+3);

	if (it!=haystack.end())
		std::cout << "needle1 last found at position " << (it-haystack.begin()) << '\n';

	int needle2[] = {4,5,1};

	// using predicate comparison:
	it = std::find_end (haystack.begin(), haystack.end(), needle2, needle2+3, myfunction);

	if (it!=haystack.end())
		std::cout << "needle2 last found at position " << (it-haystack.begin()) << '\n';
	system("pause");
	return 0;
}


STL源码剖析——STL算法之find查找算法 本文介绍的STL算法中的find、search查找算法。在STL源码中有关算法的函数大部分在本文介绍,包含findand find_if、adjacent_find、search、search_n、lower_bound、 upper_bound、 equal_range、binary_search、find_first_of、find_end相关算法,下面对这些算法的源码进行了详细的剖析,并且适当给出应用例子,增加我们对其理解,方便我们使用这些算法。 阅读详情

相关推荐

Centos7安装Tesseract5.5.0+SpringBoot集成部署(离线版)

Java 中实现 OCR(光学字符识别)功能,可以使用 Tesseract OCR,这是一个开源的 OCR 引擎,支持多种语言,并且可以在 Java 中通过 Tesseract API 进行集成。

Leopard锋的博客 2320

find_end详解

函数功能:查找在父序列中最后匹配的子序列. find_end这个函数比较特殊一点,说起特殊并不是指其功能的特殊,而是其命名的特殊. 我们知道find系列算法是查找指定值的函数(单个值),而search系列则是查找”子系列”算法.但是Nicolai M.Josuttis在书里面也介绍到了原因:它说是因为这些算法并非早起STL的部分.这可能就是需要C++标准委员会商榷的一部分了.但是话又说回来,如果按

sunliangyuan的专栏 3728

HRnet的pytorch实现

HRnet的pytorch实现

奋土的博客 1953

无涯教程-C++ 算法 - find_end函数

C++算法find_end()函数在集合中搜索模式的最后一次出现,或者说在集合中序列的一小部分最后一次出现。它基本上在[first1,last1)指定的参数内搜索[first2,last2)定义的序列的出现。如果找到该事件,则返回第一个元素的迭代器,否则返回last1。

无涯教程 906

POWER SI仿真流程

一、打开软件Power SI二、加载PCB,可以直接使用brd文件,不用再进行格式转换三、check Stackup,与原来的PCB叠层对照一遍,检查数据加载后有没有出错。四、select Nets,加载brd文件后,可能所有的网络都处于使用状态,先在右侧net manager下面右键disable all nets,再使能需要仿真的电源网络(如果要仿真的网络没有归属到电源网络,在其上右键,选classfy as power \ground nets)

lx5213的博客 1321

MLC-LLM框架在安卓设备上的模型编译与部署全流程解析

本文详细解析了如何利用MLC-LLM框架在安卓设备上编译与部署大语言模型。从环境搭建、模型获取与量化编译,到最终的安卓应用打包与调试,提供了完整的实战流程。重点介绍了如何通过MLC-LLM将大型模型优化为适合移动端运行的格式,实现本地、低延迟、隐私安全的AI应用部署。

weixin_29251337的博客 475

find_end, search

STL算法里面有两个查找子序列的函数,分别是find_end和search。由于两者比较像,所以我将两者实现列出比较,并附上使用的例子。 1.find_end功能是在序列一[first1,last1)所涵盖的区间中,查找序列二[first2,last2)。如果序列一之内不存在,返回迭代器last1,否则返回最后一次出现对应的迭代器。 实现如下: template ForwardItera

tianya_team 606

中兴B860AV2.1-A刷机避坑指南:晶晨免拆神器+安卓7.1.2固件实测

本文提供中兴B860AV2.1-A机顶盒的详细刷机教程,重点介绍使用晶晨免拆神器配合安卓7.1.2线刷固件包的实操步骤。内容涵盖刷机前的硬件确认、工具准备、软件设置、烧录全过程监控及常见问题解决,旨在帮助用户安全、高效地完成刷机,规避变砖风险,释放设备潜力。

pytorch8learner的博客 746

C++ STL算法find_end(12)

函数原型 //不带谓词 template<class _FwdIt1,class _FwdIt2> _NODISCARD inline _FwdIt1 find_end(_FwdIt1 const _First1, const _FwdIt1 _Last1, const _FwdIt2 _First2, const _FwdIt2 _Last2) //带谓词 template<class _FwdIt1, class _FwdIt2, class _Pr> _NODISC.

苦逼的程序猿 833

【强化学习】强化学习中,训练过程的稳定性是什么?该如何进行衡量?请详细进行解释

在强化学习中,训练过程的稳定性指的是算法在训练过程中表现出一致的行为,并且能够稳定地收敛到一个好的策略。收敛性:算法是否能够在有限的时间内收敛到一个近似最优的策略。鲁棒性:算法在不同的初始条件或环境扰动下的表现是否稳定。方差:算法在多次运行中表现出的变异程度。稳定的训练过程意味着算法的训练曲线平滑奖励信号变化小,且策略或价值函数的变化是渐进的。

wq6qeg88的博客 1630

PCL点云DBSCAN聚类算法:基于密度的点云聚类

核心点是在给定半径内拥有足够多邻居点的点,边界点是在给定半径内没有足够多邻居点但是位于核心点的邻域内的点,噪声点是既不是核心点也不是边界点的点。本文将介绍PCL中的DBSCAN(基于密度的空间聚类应用噪声)算法,用于点云数据的聚类。上述示例代码首先从PCD文件中读取点云数据,并设置了DBSCAN聚类的参数,包括邻域搜索半径(epsilon)和邻域内最小点数(min_points)。需要注意的是,示例代码中的点云数据格式为pcl::PointXYZ,如果使用其他类型的点云数据,需要相应地修改代码。

LpmShell的博客 1239

简单的程序诠释C++ STL算法系列之十二:find_end

C++STL的非变易算法(Non-mutating algorithms)是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。        find_end算法在一个序列中搜索出最后一个与另一序列匹配的子序列。有如下两个函数原型,在迭代器区间[first1, last1)中搜索出与迭代器区间[first2, last2)元素匹配的子序列,返回首元素的迭

Jerry.Jiang的程序人生 6786

Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)

写 SQL 是后端开发的日常,但复杂的 JOIN、子查询、窗口函数总让人头疼。本文教你用 Codex CLI 实现:自然语言直接生成 CREATE TABLE、复杂 SQL 查询、数据库迁移脚本(Prisma/Knex/Alembic)、ORM 模型代码(SQLAlchemy/TypeORM)、甚至自动生成数据库文档。重点强调安全红线——永远不要让 AI 直接连接生产数据库。从需求描述到完整数据库层代码,一篇搞定。

yueyeguzhuo的专栏 234

C++ find()排序函数用法详解(深入了解,一文学会)

注意,find_end() 函数的第一种语法格式,其底层是借助 == 运算符实现的。这意味着,如果 [first1, last1] 和 [first2, last2] 区域内的元素为自定义的类对象或结构体变量时,使用该函数之前需要对 == 运算符进行重载。匹配{1,2,3}的起始位置为:7,*it = 1。匹配{2,3,4}的起始位置为:4,*it = 8。5 find_first_of() 函数。3 find_if_not() 函数。2 find_if() 函数。4 find_end()函数。

断点 1943

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++ STL find_end 用法

给定两个序列A和B,用于在序列 A 中查找序列 B 最后一次出现的位置。

GPU全栈博主 432

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

find_end

find_end用于在序列A中查找满足条件的序列B,返回序列B在序列A中最后出现的位置。 #include <algorithm> #include <iostream> #include <string> #include <vector> using namespace std; bool findComp(int i, int j) { return i > j; } int main() { vector<int>

atinybirdinit的专栏 141

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

stl算法 find_end的用法

工作中对涉及到比较多数据的搜索排序等操作,为了省去数据操作编写过多相似的排序搜索代码,我计划将stl中的算法引入到工作中去,增加代码的精简程度。 下面就说下find_end的用法。一、函数说明find_end:     函数原型:       template        FdwIt1  find_end(FdwIt1 first1,FdwIt1 last,FdwIt2 first2,F

技术之路 4389

C++算法find_end和reverse

(1)find_end算法的使用 结果展示: (2)reverse将区间(begin,end)内的元素全部逆序 结果展示:

21号先锋者 692

find_end 和 search

 对于STL中的find_end和search算法有所迷惑,感觉他们都差不多啊,后来看了一篇文章,觉得说得很有道理,摘录部分如下:Find_end is misnamed: it is much more similar to search than to find, and a more accurate name would have been search_end. 原来都差不多

知识来自积累 1194

c++之STL(13) STL 算法 - 查找算法(3)search() find_end()

search() 是从前面找 find_end() 是从后门找 注意:两个算法是一对,第二个算法叫search_end(),但是被命名为find_end(); 两个都是用来在容器中查找,连续的数据在容器中是否存在

taotaoahui 1385

C++算法find_end() 和 find_frist_of()

算法 返回值 作用 find_end() _FwdIt1 搜索某个子序列的最后一次出现地点 find_frist_of() _FwdIt1 搜索某些元素的首次出现位置 find_end()的参数...

焕小谢的博客 1184

find_end 源码剖析

一:用法解析 函数原型: equality (1)     template    ForwardIterator1 find_end (ForwardIterator1 first1, ForwardIterator1 last1,                               ForwardIterator2 first2, ForwardIterator2 la

半壶老酒 765

search & find_end

search()、find_end() 分别在一个指定的元素序列里查找另一指定子序列的第一次和最后一次出现的位置。   1. search() /* template ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1, Forw

人生代码,代码人生。。。 842

std::find_end 用法

描述:        在容器中寻找子序列最后出现的位置。        用 operator== 比较元素。 定义: template< class ForwardIt1, class ForwardIt2 > ForwardIt1 find_end( ForwardIt1 first, ForwardIt1 last, ForwardIt2 s_first, Forward

滴水穿石的博客 505
上一篇: 算法之旅,直奔<algorithm>之十五 find
下一篇: 算法之旅,直奔<algorithm>之十七 find_first_of
p11323
博客等级 码龄14年 79粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值