find泛型算法
来源:互联网 发布:it就业方向 编辑:程序博客网 时间:2024/05/17 06:16
学习stl有段时间了,总想写点什么,做点笔记,然后就开始纠结了是先写allocator, vector还是别的,最终决定柿子先挑软的捏,从算法开始吧,此为我的第一作,呵呵.
一个比较简单的find算法,先声明不是容器内部的算法,是一个泛型算法~~
在此先向<<stl源码剖析>>这本书致敬!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
华丽的分割线
find()算法的用途主要是循环查找
//find.htemplate <class Iterator, class T>Iterator find(Iterator begin, Iterator end, const T &value) {while(begin != end && *begin != value) {++begin;}return begin;}
测试程序
//main.cpp#include <iostream>#include "find.h"//#include <algorithm>#include <vector>#include <list>#include <set>#include <map>#include <string>#include <utility>using namespace std;int main(void) {int a[5] = {0, 1, 2, 3, 4};vector<int> ivec(a, a+5);list<int> ilis(a, a+5);set<int> iset(a, a+5 );map<int, string> imap;imap[0] = "jiang";imap[1] = "ya";imap[2] = "feng";imap[3] = "a";imap[4] = "hero";int *p = find(a, a+5, 3);cout << *p << endl;//3vector<int>::iterator iter1 = find(ivec.begin(), ivec.end(), 3);cout << *iter1 << endl;//3list<int>::iterator iter2 = find(ilis.begin(), ilis.end(), 3);cout << *iter2 << endl;//3set<int>::iterator iter3 = find(iset.begin(), iset.end(), 3);cout << *iter3 << endl;//3/*map<int, string>::iterator iter4 = find(imap.begin(), imap.end(), make_pair(3, string("a")));*///errormap<int, string>::iterator iter4 = find(imap.begin(), imap.end(), pair<const int, string>(3, string("a")));cout << (*iter4).second << endl;// asystem("pause");return 0;}
用map测试时还有点小插曲,即
map<int, string>::iterator iter4 = find(imap.begin(), imap.end(), make_pair(3, string("a")))是错误的,因为make_pair(3, string("a")) 生成 pair<int, string>而map中是 pair<const int, string>类型,所以不能比较!
故而用的是
map<int, string>::iterator iter4 = find(imap.begin(), imap.end(), pair<const int, string>(3, string("a")));
- find泛型算法
- 泛型算法系列6:find()&&find_if()
- find泛型算法的几种应用模式
- C++语法基础--泛型算法(generic algorithm)--find(),find_if()
- 泛型算法find和find_if以及sort
- 1.3:Union-Find算法-----quick-find算法
- C++学习笔记24——泛型算法之find
- 泛型算法(find、count、sort、fill、unique、copy、lambda、迭代器)
- 线性搜索算法find
- STL算法:find、fill
- FIND-S算法
- STL find 算法
- Union-Find 算法实现
- A*Path Find 算法
- 四、union-find算法
- Union Find算法
- union-find算法
- UNION-FIND算法
- Linux内核bridge浅析
- Context3D类中的drawToBitmapData方法(将GPU缓冲区数据写到位图中)
- 利用WebRequest发送和获取数据
- oralce笔记5——关于数据库连接数限制
- Java Socket使用小技巧
- find泛型算法
- c#.net多线程编程教学(2):Thread类
- 编译android 4.0 (ICS)
- PL/SQL 杀掉数据库阻塞线程
- 告别过去,面向未来
- CRC算法及原理
- DemoCNN_MNIST error
- 未来两个月计划
- 网页去重:搜索引擎重复网页发现技术分析1