map使用

  • Post author:
  • Post category:其他



https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html



https://blog.csdn.net/tianwei0822/article/details/82082234



https://blog.csdn.net/qq632544991p/article/details/51713903

#include <map>  //注意,STL头文件没有扩展名.h
map<int, string> mapStudent;

//插入
 mapStudent.insert(pair<int, string>(1, "student_one"));  //不能覆盖
 mapStudent.insert(map<int, string>::value_type (1, "student_one"));  //不能覆盖
 mapStudent[2] = "student_two";  //可以覆盖

//map的大小
Int nSize = mapStudent.size();

//数据遍历
map<int, string>::iterator iter;  //前向迭代器
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)  
	cout<<iter->first<<' '<<iter->second<<endl;  
    
map<int, string>::reverse_iterator iter;  //反向迭代器
for(iter = mapStudent.rbegin(); iter != mapStudent.rend(); iter++)  
	cout<<iter->first<<"  "<<iter->second<<endl;  
	
for(int nindex = 1; nindex <= nSize; nindex++)  //数组形式,注意是从1到size
        cout<<mapStudent[nindex]<<endl;  

//数据查找
mapStudent.count(nindex);//返回1 有这个数,返回0 没有这个数

//iterator数据类型是一个std::pair对象,包括两个数据 iterator->first和 iterator->second分别代表关键字和存储的数据。
map<int, string>::iterator iter;  //begin()第一个条目,end()最后一个条目
    iter = mapStudent.find(nindex);  //如果有数 返回此位置的迭代器,如果没有 返回mapStudent.end()
    if(iter != mapStudent.end())  
       cout<<"Find, the value is "<<iter->second<<endl;  
    else  
       cout<<"Do not Find"<<endl;  


//如果要删除1,用迭代器删除  
       map<int, string>::iterator iter;  
       iter = mapStudent.find(1);  
       mapStudent.erase(iter);  
  
       //如果要删除1,用关键字删除  
       int n = mapStudent.erase(1);//如果删除了会返回1,否则返回0  
  
       //用迭代器,成片的删除  
       //一下代码把整个map清空  
       mapStudent.erase( mapStudent.begin(), mapStudent.end() );  
       //成片删除要注意的是,也是STL的特性,删除区间是一个前闭后开的集合  
       clear()就相当于enumMap.erase(enumMap.begin(),enumMap.end());


//map中的swap不是一个容器中的元素交换,而是两个容器所有元素的交换。

//map中的sort问题
//map中的元素是自动按Key升序排序,所以不能对map用sort函数;



map的基本操作函数:

     C++ maps是一种关联式容器,包含“关键字/值”对

     begin()         返回指向map头部的迭代器
     end()           返回指向map末尾的迭代器
     rbegin()        返回一个指向map尾部的逆向迭代器
     rend()          返回一个指向map头部的逆向迭代器
     
     erase()         删除一个元素
     clear()        删除所有元素
     
     insert()        插入元素
     
     count()         返回指定元素出现的次数
     find()          查找一个元素
     
     size()          返回map中元素的个数
     empty()         如果map为空则返回true

     equal_range()   返回特殊条目的迭代器对



     get_allocator() 返回map的配置器


     key_comp()      返回比较元素key的函数

     lower_bound()   返回键值>=给定元素的第一个位置

     max_size()      返回可以容纳的最大元素个数

     swap()           交换两个map

     upper_bound()    返回键值>给定元素的第一个位置
     value_comp()     返回比较元素value的函数