C语⾔·C++中map的⽤法详解
⼀、定义
  (1) map<string,  int>  Map;
  (2) 或者是:typedef  map<string,int>  Mymap;
        Mymap  Map;
⼆、插⼊元素
插⼊数据之前先说⼀下pair 和 make_pair 的⽤法。
1. pair是⼀个结构体,有first和second 两个域,可以直接访问
1string key="sunquan";c++string类型
2int value=123456;
3 pair <string,int>  b(key, value);//这⾥ pair <string,string>是数据类型,后⾯是调带参构造⽅法
4 cout<<b.first<<endl;
2. ⽽make_pair是返回⼀个pair <;类型,类型>  的数据,
  eg:make_pair("asa",123456);
不过还得个pair <string,int>类型的变量来接受返回值。
(1) Map["abc"]=1;
(2) Map.insert(pair<string,int>("c",3));
(3) Map.insert(make_pair<string,int>("d",4));
三、修改、查元素
(1)修改Map["sunquan"]=11111;
(2)查数据:可以通过键来查,语法:Map.find(key); 这样会返回迭代器的地址,key不存在的话迭代器的值为d();
  注:不要⽤int value=Map[key];
  这样会在Map中增加这个key,⽽value就是缺省值(int 为0,string为空字符串)。
四、删除元素
(1)通过key删除;
(2)通过迭代器来删除;
相关操作的详细代码:
1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <string>
5 #include <map>
6using namespace std;
7
8int main()
9 {
10    map<string,int> Map;
11    map<string,int> ::iterator it;
12    Map.insert(pair<string,int>("root",12));
13    Map.insert(pair<string,int>("scot",11));
14for(it=Map.begin();it!=d();it++)
15        cout<<it->first<<""<<it->second<<endl;
16    it=Map.begin();
17    ase(it);//通过迭代器删除
18string key="root";
19    ase(key);//通过key删除
20
21    ase(Map.begin(),d());//⼀个迭代器,到另⼀个迭代器
22//相当于  Map.clear();
23
24for(it=Map.begin();it!=d();it++)
25        cout<<it->first<<""<<it->second<<endl;
26return0;
27 }
注:
  map<int, string>::iterator it 是声明⼀个迭代器  map<int, string> it 是声明⼀个map容器
五、c++中map的常见⽅法
  begin()  返回指向map头部的迭代器
  clear()  删除所有元素
  count()  返回指定元素出现的次数
  empty()  如果map为空则返回true
  end()  返回指向map末尾的迭代器
  equal_range()  返回特殊条⽬的迭代器对
  erase()  删除⼀个元素
  find()  查⼀个元素
  insert()  插⼊元素
  max_size()  返回可以容纳的最⼤元素个数
  size()  返回map中元素的个数
  swap()  交换两个map
  get_allocator()  返回map的配置器
  key_comp()      返回⽐较元素key的函数
  lower_bound()    返回键值>=给定元素的第⼀个位置
  max_size()      返回可以容纳的最⼤元素个数
  rbegin()        返回⼀个指向map尾部的逆向迭代器
  rend()          返回⼀个指向map头部的逆向迭代器
  upper_bound()    返回键值>给定元素的第⼀个位置
  value_comp()      返回⽐较元素value的函数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。