STL官方文档:http://www.cplusplus.com/reference/stl/
Map和Mulitmap使用
头文件#include<map>
定义:Map是关联容器,每个元素都是Key:Value为一对的键与健值。
唯一的不同是,map的键值key不可重复,而multimap可以,也正是由于这种区别,map支持[ ]运算符,multimap不支持[ ]运算符。在用法上没什么区别。
定义:
map<key_type,value_type> map_name;
增加元素:
map_name[key]=value;
map_name.insert( pair<key_type,value_type> (key,value ) )
基本操作函数
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
补充Set和Pair的使用:
set定义:
set也是关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。set, multiset的区别是:set不允许重复元素,multiset允许重复。
set中常用的方法
begin() 返回set容器第一个元素的迭代器
end() 返回一个指向当前set末尾元素的下一位置的迭代器.
clear() 删除set容器中的所有的元素
empty() 判断set容器是否为空
max_size() 返回set容器可能包含的元素最大个数
size() 返回当前set容器中的元素个数
rbegin() 返回的值和end()相同
rend() 返回的值和begin()相同
示例:
set<int> s;s.insert(1);s.insert(3);s.insert(2);s.insert(1);cout << "set 的 size 值为 :" << s.size() << endl;//3cout << "set 中的第一个元素是 :" << *s.begin() << endl;//1cout << "set 中的最后一个元素是:" << *(--s.end()) << endl;//3for (set<int>::iterator it = s.begin(); it != s.end(); it++) //使用迭代器进行遍历 {printf("%d\n", *it);//1\n2\n3\n}s.clear();if (s.empty()){cout << "set 为空 !!!" << endl;//set 为空 !!!}cout << "set 的 size 值为 :" << s.size() << endl;//0
Pair定义:
pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl 中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2 个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
其标准库类型--pair类型定义在#include <utility>头文件中,定义如下:
类模板:template<class T1,class T2> struct pair
参数:T1是第一个值的数据类型,T2是第二个值的数据类型。
功能:pair将一对值(T1和T2)组合成一个值,这一对值可以具有不同的数据类型(T1和T2),
两个值可以分别用pair的两个公有函数first和second访问。
构造函数:
pair<Typename1, T2> p1; 默认构造,设置元素类型
pair<T1, T2> p1(v1, v2); 创建一个pair对象,它的两个元素分别是T1和T2类型,其中first 成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2); 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型
其他函数:
p1 < p2; 两个pair对象间的小于运算,其定义遵循字典次序:如 p1.first < p2.first 或 者 !(p2.first < p1.first) && (p1.second < p2.second) 则返回true。
p1 == p2; 如果两个对象的first和second依次相等,则这两个对象相等;该运算使用 元素的==操作符。
p1.first; 返回对象p1中名为first的公有数据成员
p1.second; 返回对象p1中名为second的公有数据成员