C++ STL map

map是STL的一个关联容器,对象是模板类,需要关键字key和存储对象value两个模板参数,内部形成相对应key - value,也可以理解为输入时的一对一的映射。

例如:std:map int_str,这样呢,我们就形成了一个以 int 作为索引,指向string的指针。这里的int,string 类型不唯一,你也可以使用int,int或者int , double或者string,double等等

  • 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的函数

key:

map的第一个关键字,也就是key,每个key只能在map中出现一次。

value:

map的第二个参数,也称为对应key的值。

map内部数据排列其实是内部自建一颗红黑树(非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,红黑树的特点是增加和删除节点对迭代器的影响很微弱,操作的话只对操作节点有影响。

对于迭代器来说,可以修改实值,而不能修改key。

数据的插入与检测

  1. insert函数插入pair数据
  2. insert函数插入value_type数据
  3. 以数组形式插入数据
#include   
#include   
#include   
using namespace std;  
int main()  
{  
    map int_str;               //个人觉得这样命名简单 
    int_str.insert( pair(1, "I") );  
    int_str.insert( pair(2, "LOVE") );  
    int_str.insert( pair(3, "ME") );  
    
    int_str.insert(map::value_type (4, "ACM"));  
    int_str.insert(map::value_type (5, "CCPC"));  
    int_str.insert(map::value_type (6, "ICPC")); 
    
	int_str[7] = "YUE";  
    int_str[8] = "TING";  
    int_str[9] = "ZHI"; 
    
    pair::iterator, bool> boll_it; 
	 
    boll_it = int_str.insert( pair(1, "YOU") );  //数据插入 与检测 
    
    if(boll_it.second == true)  
        cout<<"YES"<(2, "NICE"));   //数据插入 与检测 
    if(boll_it.second == true)  
        cout<<"FIND"<::iterator it;         //迭代器指针 
  
    for(it = int_str.begin(); it != int_str.end(); it++)  
       cout<first<<' '<second<first<<' '<second<

output:

NO
NO FIND
1 I
2 LOVE
3 ME
4 ACM
5 CCPC
6 ICPC
7 YUE
8 TING
9 ZHI



1 you
2 nice
3 ME
4 ACM
5 CCPC
6 ICPC
7 YUE
8 TING
9 ZHI


insert函数插入数据时,如果map中有这个关键字,insert插入失败,与集合的唯一性有关。而数组方式则会插入,也可以说是覆盖掉该关键字对应的值

map数据的多少计算

size函数

    int int_str_n = int_str.size();
    	cout<

ps:这一小段程序放到上面程序段内就可以啦,小懒一下,嘻嘻

数据的遍历

前向迭代器,反相迭代器,数组形式输出

    for(it = int_str.begin(); it != int_str.end(); it++)          //正向输出 
       cout<first<<' '<second<::reverse_iterator iter;  
    
    for(iter = int_str.rbegin(); iter != int_str.rend(); iter++)  //反向输出 
        cout<first<<"  "<second<

简单加深掌握

你可能感兴趣的:(C++ STL map)