C++ map 使用方法及示例

map是 C ++ STL(标准模板库)的一部分。map是存储排序的键值对的关联容器,其中每个键都是唯一的,可以插入或删除,但不能更改。但是与键关联的值可以更改。

例如:一个员工map容器,其中员工ID是键,姓名是值,则可以表示为:

101Nikita
102Robin
103Deep
104John

语法

template < class Key,                     //map::key_type
           class T,                 //map::mapped_type
           class Compare = less,         //map::key_compare
           class Alloc = allocator<pair>    //map::allocator_type
           > class map;

参数

key:要存储在map中的键的数据类型。

type:要存储在map中的值的数据类型。

compare:一个比较类,它接受两个bool类型相同的参数,并返回一个值。此参数是可选的,二进制谓词less <“ key”>是默认值。

alloc:分配器对象的类型。此参数是可选的,默认值为分配器

创建 map

使用以下语句可以轻松创建map:

typedef pair<const Key, T> value_type;

上面的语句将用于创建一个键类型为Key类型,value值类型为 value_type的map重要的一点是,map的键和相应的值始终成对插入,您不能在map中仅插入键或仅插入值。

实例1

#include <string.h>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()
{
   mapEmployees;
   // 1) 使用数组索引符号进行赋值
   Employees[101] = "Nikita";
   Employees[105] = "John";
   Employees[103] = "Dolly";
   Employees[104] = "Deep";
   Employees[102] = "Aman";
   cout << "Employees[104]=" << Employees[104] << endl << endl;
   cout << "Map 大小: " << Employees.size() << endl;
   cout << endl << "自然顺序:" << endl;
   for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
   cout << endl << "相反顺序:" << endl;
   for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
}

输出:

Employees[104]=Deep

Map 大小: 5

自然顺序:
101: Nikita
102: Aman
103: Dolly
104: Deep
105: John

相反顺序:
105: John
104: Deep
103: Dolly
102: Aman
101: Nikita

成员函数

以下是map的所有成员函数的列表:

构造函数/析构函数

函数描述
constructors构造map
destructorsmap析构函数
将map元素复制到另一个map容器。

迭代器

函数描述
返回指向map中第一个元素的迭代器。
返回指向map中第一个元素的const迭代器。
返回指向末尾的迭代器。
返回指向末尾的常量迭代器。
返回指向末尾的反向迭代器。
返回指向起点的反向迭代器。
返回指向末尾的常量反向迭代器。
返回指向起点的常量反向迭代器。

容量

函数描述
如果map为空,则返回true。
返回map中的元素数。
返回map的最大容量。

元素访问

函数描述
用给定的键检索元素。
用给定的键检索元素。

修饰符

函数描述
在map中插入元素。
从map上擦除元素。
交换map内容。
删除map的所有元素。
构造新元素并将其插入map。
通过提示构造新元素并将其插入map。

观测器

函数描述
key_comp返回键比较对象的副本。
value_comp返回值比较对象的副本。

操作方式

函数描述
搜索具有给定键的元素。
count获取与给定键匹配的元素数。
lower_bound返回迭代器的下限。
upper_bound返回一个迭代器到上限。
equal_range返回与给定键匹配的元素范围。

分配器

函数描述
get_allocator返回用于构造map的分配器对象。

非成员重载函数

函数描述
operator==检查两个map是否相等。
operator!=检查两个map是否相等。
operator<检查第一个map是否小于其他map。
operator<=检查第一个map是否小于或等于其他map。
operator>检查第一个map是否大于其他map。
operator>=检查第一个map是否大于其他map。
交换两个map的元素。