您的位置:首页 > 其它

std::find ,set.find, multiset.find, map.find和multimap.find算法总结 - Hibernate4 - 博客园

2013-03-28 18:23 393 查看
std::find ,set.find, multiset.find, map.find和multimap.find算法总结 - Hibernate4 - 博客园

std::find ,set.find, multiset.find, map.find和multimap.find算法总结

这几天对到底选用哪个容器,用哪种形式的find函数有一些迷惑的地方。
工作之后,花些时间对这些常用的东西做一个总结,方便以后翻阅所用。

1.通用std::find 函数

例子1:

// set::find #include <iostream> #include <set> usingnamespacestd;   intmain () {   set<int> myset;   set<int>::iterator it;     // set some initial values:   for(inti=1; i<=5; i++) myset.insert(i*10);    // set: 10 20 30 40 50     it=myset.find(20);   myset.erase (it);   myset.erase (myset.find(40));     cout << "myset contains:";   for(it=myset.begin(); it!=myset.end(); it++)     cout << " " << *it;   cout << endl;     return0; }


方式一:     typedefstd::multimap<int,int> Pairs;     multimap<int,int>::iterator iter;     Pairs pairs;     pairs.insert(make_pair(1, 1));     pairs.insert(make_pair(1,2));     pairs.insert(make_pair(1,3));     pairs.insert(make_pair(2, 4));     pairs.insert(make_pair(2,5));     pairs.insert(make_pair(3,2));     intkey = 1;     Pairs::iterator position = pairs.lower_bound(key);     while(position != pairs.upper_bound(key))     {         cout << position->first << "\t"<< position->second;         ++position;     } 方式二:     typedefstd::multimap<int,int> Pairs;     multimap<int,int>::iterator iter;     Pairs pairs;     pairs.insert(make_pair(1, 1));     pairs.insert(make_pair(1,2));     pairs.insert(make_pair(1,3));     pairs.insert(make_pair(2, 4));     pairs.insert(make_pair(2,5));     pairs.insert(make_pair(3,2));       iter = pairs.find(1);    //find返回的是第一个找到的元素的位置     if(iter == pairs.end()) cout << "can not find 2\n";  //注意判断没有找到的办法     elsecout << iter->second << endl;       pair<Pairs::iterator, Pairs::iterator> range; //前面说了find只能返回第一个位置     range = pairs.equal_range(1);             //要是想得到全部,只能这样啦     for(iter = range.first; iter != range.second; iter++)             cout << iter->first << " " << iter->second << endl;

3. boost bimap和 boost unordered_map的find方法。

因为此处重点对STL的说明,关于bimap和unordered_map的find方法,请参看本博客下一篇博文。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: