STL提供了4种关联容器:set、multiset、map和multimap。前两种在头文件#include
一、set (集合)
Set是最简单的关联容器类,其值类型与键相同,键是唯一的,这意味着set中不会有多个相同的键。就像数学学过的集合一样,一个集合对象中不允许有两个相同的值一样。
Set是自动进行排序的,合并重复的对象元素,是可反转的,且键值是唯一的。
如下定义和使用:
String s1[5]={“a”,”b”,”c”,”d”,”e”};
Set
ostream_iterator
copy(A.begin(),A.end(),out)//输出A中的元素到控制台。
set_union()函数接受5个迭代器参数,前两个迭代器定义了第一个集合的区间,接下来两个定义了第二个集合区间,最后一个迭代器是输出迭代器,指出将结果集合复制到什么位置。
例如,1.显示集合A和B的并集:
Set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<string,char>out(cout,””));
2.将集合A和B的并集的结果放到集合C中
Set_union(A.begin(),A.end(),B.begin(),B.end(),insert_iterator<set
注意:仔细比较1和2的区别,区别在于最后一个参数
Set_intersection()和set_difference()分别查找交集和获得两个集合的差,它们的接口与set_union()相同
由于排序决定了插入的位置,则set的插入只指定要插入的信息,不指定插入位置。
例如:string s(“basketball”);
A.insert(s);//插入一个值
A.insert(B.begin(),B.end());//插入一个范围
lower_bound()和upper_bound()方法:
lower_bound()将键(即对象中的元素值)作为参数并返回一个迭代器,该迭代器指向集合中第一个不小于键参数的成员。同样,upper_bound()将键(即对象中的元素值)作为参数并返回一个迭代器,该迭代器指向集合中第一个大于键参数的成员。
例如:如果有一个字符串集合,可用这两个方法获得一个这样的区间,即包含集合中从“b”到“f”的所有字符串。
二、map(映射)
在map中,值与键的类型可以不同,键是唯一的,每个键只对应一个值
map对象中的元素就是就像一个键值对,是成对出现的,通过键的下标可以找到键对应的值。
模板类pair
例如:map
pair
Codes.insert(item);
对于pair对象,可以使用first和second成员来访问其两个部分。
Cout<