关联式容器
1.管理元素集合的STL容器大致分为两类,序列式容器(有顺序的集合)和关联式容器(经过排序的集合)。
2.关联式容器再管理数据的过程中会自动给元素排序。其优点在于可以随时采用二分搜索法,搜索元素的效率极高。
set
1.set是根据元素值进行排序的集合,所插入的元素在集合中唯一,不存在重复元素。
1. #include<set> 用来将STL的set包含到程序中
2. set<int> S; 一个声明。
3. 成员函数:
size() 返回set中的元素数
clear() 清空set
begin() 返回指向set开头的迭代器
end() 返回指向set末尾的迭代器
insert(key) 向set中插入元素key
erase(key) 删除含有key的元素
find(key) 搜索与key一致的元素,并返回指向该元素的迭代器。
若没有key一致的元素,则返回末尾end()
3.set由二叉搜索树实现,而且对树进行了平衡处理,使得元素在树中分布比较均匀,因此能保持搜索、插入、删除操作的复杂度在O(logn)。
map
1.map集合以键与值的组合为元素,每个元素拥有一个键和一个值,集合以键作为排序标准。
2.集合中各元素的键唯一,不存在重复。
3.map可以看作是一种能使用任意类型下标的关联式容器。
1. #include<map> 用来将STL的map包含到程序中
2. map<string, int> T; 一个声明,用于生成关联数组,该关联数组管理以string为键的int型元素。
3. map容器可以在"[ ]"运算符中指定键来访问(读写)对应值,也可以通过迭代器顺次访问每一对键和值。
pair为STL提供的结构体模板,其第一个元素可用first访问,第二个元素可以用second访问。
4. 成员函数:
size() 返回map中的元素数
clear() 清空map
begin() 返回指向map开头的迭代器
end() 返回指向map末尾的迭代器
insert((key, val)) 向map中插入元素
erase(key) 删除含有key的元素
find(key) 搜索与key一致的元素,并返回指向该元素的迭代器
没有与key一致的元素,则返回末尾end()