find汎用アルゴリズム
2587 ワード
stlを勉强してしばらく时间があって、いつも何かを书きたいと思って、メモを取って、それから葛藤し始めましたallocatorを先に书いて、vectorはやはり别で、最后に柿が先に柔らかいつまみを选ぶことを决めて、アルゴリズムから始めましょう、これは私の第1作で、ほほほ.
比較的簡単なfindアルゴリズムで、先音明は容器内部のアルゴリズムではなく、汎用アルゴリズムです~~
ここでまず<>この本に敬意を表します!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
華麗な分割線
find()アルゴリズムの用途は主にループ検索である
テストプログラム
mapでテストするときにまだエピソードがあります.を生成し、mapではpairタイプなので比較できません!
だから使うのは
比較的簡単なfindアルゴリズムで、先音明は容器内部のアルゴリズムではなく、汎用アルゴリズムです~~
ここでまず<
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
華麗な分割線
find()アルゴリズムの用途は主にループ検索である
//find.h
template <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; //3
vector<int>::iterator iter1 = find(ivec.begin(), ivec.end(), 3);
cout << *iter1 << endl; //3
list<int>::iterator iter2 = find(ilis.begin(), ilis.end(), 3);
cout << *iter2 << endl; //3
set<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")));*/ //error
map<int, string>::iterator iter4 = find(imap.begin(), imap.end(), pair<const int, string>(3, string("a")));
cout << (*iter4).second << endl; // a
system("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だから使うのは
map<int, string>::iterator iter4 = find(imap.begin(), imap.end(), pair<const int, string>(3, string("a")));