C++容器---关联式容器<map>&<multimap>

来源:互联网 发布:怎么举报一个软件 编辑:程序博客网 时间:2024/04/29 19:53

由于multimap和map相差不大,所以基本以map做练习;


集合(map)是一种包含已排序(升序)对象的关联容器。map/multimap会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素的第一个参数是key,第二个元素当做value,元素的顺序与key有关,与value无关;


模板原型

//Key为元素(键值)类型

1
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】用法:

-------------------------------

代码练习:







原创粉丝点击