个性化阅读
专注于IT技术分析

C++ multimap用法

本文概述

多图是C ++ STL(标准模板库)的一部分。多重地图是类似的容器, 例如地图, 用于存储已排序的键/值对, 但是与仅存储唯一键的地图不同, 多重地图可以具有重复的键。默认情况下, 它使用<运算符比较键。

例如:一个雇员多图, 其中雇员年龄是关键, 姓名是值, 可以表示为:

按键 价值观
23 Nikita
28 Robin
25 Deep
25 Aman

Multimap员工具有重复的密钥年龄。

句法

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

参数

key:要存储在多图中的密钥数据类型。

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

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

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

创建多图

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

typedef pair<const Key, T> value_type;

上面的表格将用于创建键类型为Key_type和值类型为value_type的多图。重要的一点是, 多图的键和相应的值始终成对插入, 不能在多图中仅插入键或仅插入值。

#include <iostream>
#include <map>
#include <string>

using namespace std;

int main()
{
    multimap<string, string> m = {
            {"India", "New Delhi"}, {"India", "Hyderabad"}, {"United Kingdom", "London"}, {"United States", "Washington D.C"}
    };
    
    cout << "Size of map m: " << m.size() <<endl;    
    cout << "Elements in m: " << endl;
    
    for (multimap<string, string>::iterator it = m.begin(); it != m.end(); ++it)
    {
       cout << "  [" << (*it).first << ", " << (*it).second << "]" << endl;
    }

    return 0;
}

输出:

Size of map m: 4
Elements in m: 
  [India, New Delhi]
  [India, Hyderabad]
  [United Kingdom, London]
  [United States, Washington D.C]

会员职能

下面是multimap的所有成员函数的列表:

建造者/毁灭者

功能 描述
constructor Construct multimap
destructor 多图析构函数
operator= 将多图的元素复制到另一个多图。

迭代器

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

容量

功能 描述
empty 如果multimap为空, 则返回true。
size 返回多图中元素的数量。
max_size 返回多图的最大尺寸。

修饰符

功能 描述
insert 在多图中插入元素。
erase 从多图上擦除元素。
swap 交换多图的内容。
clear 删除多图的所有元素。
emplace 构造新元素并将其插入到multimap中。
emplace_hint 通过提示构造新元素并将其插入到multimap中。

观察者

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

运作方式

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

分配者

功能 描述
get_allocator 返回用于构造多图的分配器对象。

非成员重载函数

功能 描述
operator== 检查两个多图是否相等。
operator!= 检查两个多图是否相等。
operator< 检查第一个多图是否小于其他多图。
operator<= 检查第一个多图是否小于或等于其他。
operator> 检查第一个多图是否大于其他多图。
operator>= 检查第一个多图是否大于其他。
swap() 交换两个多图的元素。
赞(0)
未经允许不得转载:srcmini » C++ multimap用法

评论 抢沙发

评论前必须登录!