如何使用STL进行查找?几种常用的容器vector、list、stack、map、set都不带内置的查找函数,统一由算法库提供,就是要包含头文件
#include <algorithm>
通用的查找算法有find()和find_if(),满足基本的查找功能,像for_each(), count(), count_if() 一样,这些算法也使用iterator范围,这个范围指出一个list或任意 其他容器中的一部分来处理。通常首iterator指着开始的位置,次iterator指着停止处理的地方。由次iterator指出的元素不被处理。
“find()函数”
输出:
Found:Pineapple
如果没有找到指出的对象,就会返回Fruit.end()的值,要是找到了就返回一个指着找到的对象的iterator。
值得注意的是,这里find函数的最后一个参数,我认为需要是简单简单类型的内容,或者是缺省类型,如string, int, char, double, float等,如果你想用一个自定义类型的数据作为查找依据则会出错。
如,有这样的数据结构:
这里find函数是不能完成查询的,最简单的原因就是它无法知道通过对比MyType的哪项完成查询。
所以,在这样的情况下有两种选择:
一种是写一个查找条件函数,利用find_if(),
一种就是自己写查询函数。
当然推荐第一种,将在一篇文章中讲解find_if()的用法!