使用map关联容器

前言

关联容器支持高效的关键字查找和访问。两个主要的关联容器类型是map和set。map中的元素是一些关键字-值(key-value)对:关键字起到索引的作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字。
特别指出,map和set都是按关键字有序保存元素。

使用map

一个经典的使用关联数组的例子是单词计数程序:

map<string, size_t> word_count;//string到size_t的空map
string word;
while (cin >> word)
    ++word_count[word];//提取word的计数器并将其加1
for (const auto &w : word_count)//对map中的每个元素
//打印结果
    cout << w.first << " occurs " << w.second
    << ((w.second > 1) ? " times" : " time") << endl;

为了定义一个map,我们必须指定关键字和值的类型。
map保存的每个元素中,关键字是string类型,值是size_t类型。当对word_count进行下标操作时,我们使用一个string作为下标,获得与此string相关联的size_t类型的计数器。
size_t是一种机器相关的无符号类型,它被设计的足够大以便能表示内存中任意对象的大小。在cstddef头文件中定义了size_t类型,这个文件是C标准库stddef.h头文件的C++语言版本。
while循环每次从标准输入读取一个单词。它使用每个单词对word_count进行下标操作,如果word还未在map中,下标运算符会创建一个新元素,其关键字为word,值为0。不管元素是否是新创建的,将其值加1。
一旦读取完所有输入,使用范围for语句,打印每个单词和对应的计数器。当从map中提取一个元素时,会得到一个pair类型的对象。pair是一个模板类型,保存两个名为first和second的数据成员。map所使用的pair用first成员保存关键字,用second成员保存对应的值。因此,输出语句的效果是打印每个单词及其关联的计数器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值