STL(1)——查找函数find的使用
使用list, vector 等这些标准库的类,查找是比较常用的功能,但是这些类没有提供find函数,因为对于自定义类型,它不知道如何去比较两个类型。
http://www.cppreference.com/wiki/container/list/start
但是STL提供了一种通用的查找函数find(iterator it0,iterator it1,target),下面介绍如何使用这个查找函数。
class Inst{
public:
Inst(string nm,int val){
name = nm;
value = val;
}
string Name() const{
return name;
}
int Value() const{
return value;
}
private:
string name;
int value;
};
// name 和 value 都一样, 则 实例一样
booloperator==(const Inst &a, const Inst &b){
return (a.Name()==b.Name() && a.Value()==b.Value());
}
// name 一样, 则 实例一样
booloperator==(const Inst &a, conststring name){
return (a.Name()==name);
}
测试如下,
Inst p1("abc",3);
Inst p2("abcdef",6);
list<Inst>::iterator it;
// find 需要包含头文件 <algorithm>
it = std::find(elist.begin(),elist.end(),p2);
if(it!=elist.end())
cout << (*it).Value() << endl;
string name ="abc";
it = std::find(elist.begin(),elist.end(),name);
if(it!=elist.end())
cout << (*it).Value() << endl;
但是如果list保存指针,如下,
Inst* p1 =new Inst("abc",3);
Inst* p2 = New Inst("abcdef",6);
list<Inst*>::iterator it;
it = std::find(elist.begin(),elist.end(),p2);
if(it!=elist.end())
cout << (*it)->Value() << endl;
string name ="abc";
it = std::find(elist.begin(),elist.end(),name);
if(it!=elist.end())
cout << (*it)->Value() << endl;
那么比较函数就需要做一些修改,如下,
return (a->Name()==b->Name() && a->Value()==b->Value());
}
booloperator==(const Inst* a, conststring nm){
return (a->Name()==nm);
}
在学习STL过程中,如果有错误的地方,还请各位指正,谢谢!
转载于:https://www.cnblogs.com/Frandy/archive/2011/06/03/STL_Find_List.html
STL(1)——查找函数find的使用相关推荐
- C++ STL之查找函数总结
STL中更有很多函数十分常用,其中查找是使用最高频的函数之一,以下针对C++11的查找进行总结. 1.查找(find) 1.1 std::find() 1.1.1 常用形式 //C++20前 temp ...
- C++ STL 常用查找算法
C++ STL 常用查找算法 adjacent_find() 在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器.否则返回past-the-end. ...
- C++STL常用查找算法
C++STL常用查找算法 学习目标 算法简介 find 功能描述 函数原型 示例 总结 find_if 功能描述 函数原型 示例 总结 adjacent_find 功能描述 函数原型 示例 总结 bi ...
- 数据结构(一)STL二分法查找实现及上下界
一.二分查找思想 在有序表中查找元素常常使用二分查找(Binary Search),有时也译为折半查找,它的基本思想就像是"猜数字游戏":你在心里想一个不超过1000的正整数,我可 ...
- R语言apropos函数查找包含特定字符的函数、find函数查找函数所在的位置实战
R语言apropos函数查找包含特定字符的函数.find函数查找函数所在的位置实战 目录 R语言apropos函数实战 # 基本语法 #apropos函数 # find函数 apropos函数返回一个 ...
- STL区间成员函数及区间算法总结
STL区间成员函数及区间算法总结 在这里总结下可替代循环的区间成员函数和区间算法: 相比单元素遍历操作,使用区间成员函数的优势在于: 1)更少的函数调用 2)更少的元素移动 3)更少的内存分配 在区间 ...
- stl string常用函数
原文地址:http://hi.baidu.com/baowup/blog/item/3a27465c86d71546faf2c066.html/cmtid/de1ef3f0de7554a0a40f52 ...
- C# 二进制字节流查找函数IndexOf
C# 二进制字节流查找函数IndexOf /// <summary>/// 报告指定的 System.Byte[] 在此实例中的第一个匹配项的索引./// </summary> ...
- python字符串find函数-python字符串查找函数的用法详解
python字符串查找函数的使用 打开Python开发工具IDLE,新建"findstr.py'文件,并写代码如下: s ='/ab/bx,.s' print (s.find('/x')) ...
最新文章
- jquery获取浏览器宽高
- MySQL存储过程_创建-调用
- php member limit,PHPAPP注入第十枚(未过滤)
- MySQL 可重复读,差点背上一个 P0 事故!
- Java8 HashMap源码分析
- mysql8解决区分大小写问题_球磨机“包球”和“饱磨”分不清?点进来快速区分,解决问题...
- 中国风海报灵感|几款各具特色的汉字活动海报设计
- AdaPrompt:进一步将下游任务融入到预训练模型
- CentOS 7 使用ip addr查询不到IP
- 传奇电子cq9跳高高、跳起来规则与操作技巧
- 从技术角度,设备过保就坏,是怎么实现的
- WinApi学习笔记-内存管理
- cdcq原创题--pcr技术
- 屏幕录制(Giphy Capture)并导出Gif动图
- 万彩办公大师 (一个好的 办公工具,集合了文件转换 的工具)--工具推荐
- cocos creator实现读取白鹭movieClip组件(尝试)
- [INFO1110课件讲解 一] USYD悉尼大学INFO1110 ED lessons Week1 课件 作业 assignment讲解
- Go 调用 Java 方案和性能优化分享
- 信管师培训之第十一节课作业(法律法规+标准规范+职业道德)
- 1001 hzy 和zsl 的生存挑战