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<Key>, // map::key_compare 
class Alloc = allocator<pair<const Key,T> > // map::allocator_type > 
  class map; 

参数

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

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

compare:一个比较类,接受两个相同类型的参数,并返回一个值。此参数是可选的,默认值为二元谓词less<"key">。

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

创建一个map

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

typedef pair<const Key, T> value_type; 

上述形式用于创建具有Key类型键和value_type类型值的map。一个重要的事情是,map的键和对应的值总是作为一对插入的,不能只插入键或值。

示例1

#include <string.h> 
#include <iostream> 
#include <map> 
#include <utility> 
using namespace std; int main() 
{ 
map<int, string> Employees; // 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 size: " << Employees.size() << endl; cout << endl << "Natural Order:" << endl; 
for( map<int,string>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) 
{ 
cout << (*ii).first << ": " << (*ii).second << endl; } 
cout << endl << "Reverse Order:" << endl; for( map<int,string>::reverse_iterator ii=Employees.rbegin(); 
ii!=Employees.rend(); 
++ii) 
{ cout << (*ii).first << ": " << (*ii).second << endl; 
} 
} 

输出:

Employees[104]=Deep

Map size: 5

Natural Order: 
101: Nikita 
102: Aman 
103: Dolly 
104: Deep 
105: John

Reverse Order: 
105: John 
104: Deep 
103: Dolly 
102: Aman 
101: Nikita 

成员函数

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

构造函数/析构函数

函数描述
构造函数构造map
析构函数map析构函数
operator=将map的元素复制到另一个map中。

迭代器

函数描述
begin返回指向map中第一个元素的迭代器。
cbegin返回指向map中第一个元素的常量迭代器。
end返回指向past-the-end的迭代器。
cend返回指向past-the-end的常量迭代器。
rbegin返回指向末尾的反向迭代器。
rend返回指向开头的反向迭代器。
crbegin返回指向末尾的常量反向迭代器。
crend返回指向开头的常量反向迭代器。

容量

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

元素访问

函数描述
operator[]检索具有给定键的元素。
at检索具有给定键的元素。

修改器

函数描述
insert在map中插入元素。
erase从map中删除元素。
swap交换map的内容。
clear删除map的所有元素。
emplace构造并插入新元素到map中。
emplace_hint通过提示构造并插入新元素到map中。

观察者

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

操作

函数描述
find搜索具有给定键的元素。
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。
swap()交换两个map的元素。

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言下载, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言面试题, C++语言笔试题, C++语言编程思想