精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-16
最后修改:2009-04-16
上:STL容器(1) 二 联合容器(对容器概念的另一个改造,将值与关键字关联在一起) 1. set(set,前set.h):可反转,可排序,关键字是唯一的,只能存储同一类型的值。 用法如: 1) set<string> a; 2) set<string, less<string>> b; 第二个参数用于指示用来对关键字进行排序的比较函数或对象,默认使用less<>模板。 3) set<string> A(s1,s1+3); s1为string数组 即将一个迭代区间作为参数的构造函数,区间的最后一个元素是超尾符,关键字是唯一的且被排序。 常用方法: 1) 显示集合A和结合B的并集: 2) 联合集合将关键字看作是常量,故C.begin()返回的是一个固定迭代器。set_union()将覆盖容器中的已有数据,并要求容器有足够的空间来容纳新信息。 3) 将两个区间复制到一个新的容器集合: set_union(A.begin(), A.end, B.begin(), B.end(), insert_iterator<set<string>>(C, C.begin())) 将复制转化为插入。 set_intersection()和set_difference()查找交集和获得两个交集的差,接口与set_union()相同。 4) lower_bound()将关键字作为参数并返回一个迭代器,该迭代器指向第一个不小于关键字集合的成员,同理upper_bound()返回的迭代器指向集合中第一个大于关键字参数的成员。 2. multiset(set,前multiset.h) 可能有多个值得关键字相同。 3. map(map,前map.h) 用法如: map<string, int> wordmap; set<string>::iterator si; set<string> wordset; for(si=wordset.begin(); si!=wordset.end(); si++) wordmap.insert(pair<string, int>(*si, count(words.begin(), words.end(), *si))); //wordmap[*si]=count(words.begin(), words.end, * si); 4. multimap(map,前multimap.h , 可反转的,经过排序的联合器):一个关键字可以与多个值相关联。 关键字的类型与值类型不同,特定的关键字可与多个值相关联。 1) 使用方法: multimap<int, string> codes;//第一个参数为关键字的类型,第二个单数为所存储值得类型。可选的第三个参数用于指出对关键字进行排序的比较函数或对象。默认使用less<>模板,将关键字类型作为参数。 2) 点对:为将信息结合在一起,可将关键字类型与数据类型结合为一对,方法为使用STL的pair<Class T, Class U>模板将两种对象结合到一个对象中,值类型为pair<const keytype, datatype>。 使用方法: pair<const int, string> item(213, “Los Angeles”); codes.insert(item); 或者 codes.insert(pair<const int, string> (123, “Los Angeles”)); 使用first和second来分别访问pair对象的两个部分,用法如: 3) 基本成员方法: count()用关键字作参数,返回具有该关键字的元素的数目。 lower_bound()和upper_bound()将关键字作为对象,工作方式与set相同。 equal_range() 用关键字作参数,返回与该关键字匹配的区间的迭代器,返回的两个值封装在一个pair对象中,此时连个模板参数是迭代其类型。用法如: pair<multimap<KeyType, string>::iterator, multimap<KeyType, string>::iterator> range=codes.equal_range(718). for(it=range.first; it!=range.second; ++it){ cout<<(*it).second<<endl; }
继续学习:http://www.stlchina.org/twiki/bin/view.pl/Main/STLLearnResouce 学习博客masterlee: http://blog.csdn.net/masterlee/ C++ Primer Plus 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 3700 次