映射是c stl(标准模板库)的一部分。映射是存储排序的键值对的关联容器,其中每个键都是唯一的,可以插入或删除但不能更改。可以更改与键关联的值。 例如: 员工图,其中雇员id是键,名称是值,可以表示为:
| 键 |
值 |
| 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: 要存储在地图中的键数据类型。 t: 要存储在地图中的值的数据类型。 compare: 一个比较类,它接受两个相同类型的布尔变量,并返回一个值。此参数是可选的,二进制谓词less <"key">是默认值。 alloc: 分配器对象的类型。此参数是可选的,默认值为分配器
创建地图
可以使用以下语句轻松创建地图:
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的所有成员函数的列表:
| 功能 |
说明 |
| constructors |
construct map |
| destructors |
map destructor |
| operator= |
将map的元素复制到另一个map。 |
迭代器
| 功能 |
说明 |
| begin |
返回指向地图中第一个元素的迭代器。 |
| cbegin |
返回指向地图中第一个元素的const迭代器。 |
| end |
返回指向末尾的迭代器。 |
| cend |
返回一个指向末尾的常量迭代器。 |
| rbegin |
返回指向结尾的反向迭代器。 |
| rend |
返回指向起点的反向迭代器。 |
| crbegin |
返回一个指向末尾的常量反向迭代器。 |
| credit |
返回指向起点的常量反向迭代器。 |
容量
| 功能 |
说明 |
| empty |
如果地图为空,则返回true。 |
| size |
返回地图中的元素数量。 |
| max_size |
返回地图的最大尺寸。 |
元素访问
| 功能 |
说明 |
| operator[] |
使用给定的键检索元素。 |
| at |
使用给定的键检索元素。 |
修饰符
| 功能 |
说明 |
| insert |
在地图中插入元素。 |
| erase |
从地图上擦除元素。 |
| swap |
交换地图内容。 |
| clear |
删除地图的所有元素。 |
| emplace |
构造新元素并将其插入地图。 |
| emplace_hint |
通过提示构造新元素并将其插入地图。 |
观察者
| 功能 |
说明 |
| key_comp |
返回键比较对象的副本。 |
| value_comp |
返回值比较对象的副本。 |
操作
| 功能 |
说明 |
| find |
搜索具有给定键的元素。 |
| count |
获取与给定键匹配的元素数。 |
| lower_bound |
将迭代器返回到下限。 |
| upper_bound |
将迭代器返回上限。 |
| equal_range |
返回与给定键匹配的元素的范围。 |
分配器
| 功能 |
说明 |
| get_allocator |
返回用于构造映射的分配器对象。 |
非成员重载函数
| 功能 |
说明 |
| operator == |
检查两个地图是否相等。 |
| operator!= |
检查两个地图是否相等。 |
| operator |
检查第一张地图是否小于其他地图。 |
| operator <= |
检查第一张地图是否小于或等于其他地图。 |
| operator> |
检查第一张地图是否大于其他地图。 |
| operator>= |
检查第一张地图是否大于其他地图。 |
| swap() |
交换两个地图的元素。 |