C++ map函数

C++ map函数

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

例如: 员工的map,其中员工ID是键,姓名是值,可以表示为:

Keys Values
101 Nikita
102 Robin
103 Deep
104 John

语法

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

参数

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

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

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

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

创建映射

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

typedef pair value_type;

上述表单将用于创建一个键类型为 Key type ,值类型为 value type 的映射。一个重要的事情是,映射的键和对应的值总是作为一对插入的,你不能在映射中只插入键或只插入值。

示例1

#include 
#include 
#include 
#include 
using namespace std;
int main()
{
   map Employees;
   // 1) Assignment using array index notation
   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::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
   {
       cout << (*ii).first << ": " << (*ii).second << endl;
   }
   cout << endl << "Reverse Order:" << endl;
   for( map::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的所有成员函数列表:

构造函数/析构函数

功能 描述
构造函数 构建地图
析构函数 地图析构函数
赋值运算符 将地图的元素复制到另一个地图中。

迭代器

功能 描述
begin 返回指向映射中第一个元素的迭代器。
cbegin 返回指向映射中第一个元素的常量迭代器。
end 返回指向末尾的迭代器。
cend 返回指向末尾的常量迭代器。
rbegin 返回指向末尾的反向迭代器。
rend 返回指向开头的反向迭代器。
crbegin 返回指向末尾的常量反向迭代器。
crend 返回指向开头的常量反向迭代器。

容量

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

元素访问

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

修饰符

功能 描述
插入 将元素插入映射表中。
删除 从映射表中删除元素。
交换 交换映射表的内容。
清空 删除映射表的所有元素。
构造并插入 将新元素构造并插入映射表中。
构造并插入(按提示) 按提示构造并插入新元素到映射表中。

观察者

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

操作

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

分配器

函数 描述
get_allocator 返回一个用于构造映射的分配器对象。

非成员重载函数

函数 描述
operator 检查两个映射是否相等。
operator!= 检查两个映射是否不相等。
operator< 检查第一个映射是否小于第二个映射。
operator<= 检查第一个映射是否小于等于第二个映射。
operator> 检查第一个映射是否大于第二个映射。
operator>= 检查第一个映射是否大于等于第二个映射。
swap() 交换两个映射的元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程