由于multimap和map相差不大,所以基本以map做练习;
集合(map)是一种包含已排序(升序)对象的关联容器。map/multimap会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素的第一个参数是key,第二个元素当做value,元素的顺序与key有关,与value无关;
//Key为元素(键值)类型
template <class Key, class T,class Compare=less<Key>, class Alloc=allocator<pair<const Key,T>>> class map
key:元素的key键;
T:元素的value;
comapre:实现内部排序的仿函数;
allocator:内存配置器,负责内存的分配和销毁;
构造函数:
map <key,Elem> c; //产生一个空的map
map <key,Elem> c(op); //以op为排序准则,产生一个空的map
map <key,Elem> c(begin,end);//以区间(begin,end)内的元素产生一个新的map
map <key,Elem> c(begin,end,op);//以区间(begin,end)内的元素产生一个新的map,元素排序准则为op
map <key,Elem> c1(c) //产生某个map的对象副本
op:排序准则:
1、map<float,string,greater<float> > m1;
2、map<float,string>::allocator_type ma;
ma=m1.get_allocator();
map <float,string> m2(less<float>(),ma);
输出:
map<float,string,greater<int> >::iterator it;
for循环:
Custompair p1 = (pair<float,string>)(*it);
p1.first();p1.second();
格式化输出:fixted、cout.precision(3)等
相关函数:
begin() 返回指向map头部的迭代器
end() 返回指向map末尾的迭代器
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
insert() 插入元素
clear() 删除所有元素
erase() 删除一个元素
count() 返回指定元素出现的次数
find() 查找一个元素
upper_bound() 返回键值>给定元素的第一个位置
lower_bound() 返回键值>=给定元素的第一个位置
empty() 如果map为空则返回true
equal_range() 返回特殊条目的迭代器对
get_allocator() 返回map的配置器,指明对象的初始存储地址
max_size() 返回可以容纳的最大元素个数
size() 返回map中元素的个数
swap() 交换两个map
key_comp() 返回比较元素key的函数
value_comp() 返回比较元素value的函数
--------------------------------
【pair】用法:
-------------------------------
代码练习: