C++ Primer 第11章关联容器

在这里插入图片描述

11.1 使用关联容器

  • map类型通常被常被称为关联数组。关联数组与正常数组类似,不同之处在于其下标不必是整数
  • set就是关键字的简单集合,当想知道一个值是否存在时,set是最有用的

使用map

#include<iostream>
#include<string>
#include<map>
using namespace std;

int main(int argc, char** argv)
{
	map<string, size_t> wordCount;
	string word ;

	while (cin >> word)
	{
		++wordCount[word];
		if(word=="0")
            break;
	}
	for (const auto &w : wordCount)
	{
		cout << w.first << " :  " << w.second << ends;
	}
	return 0;
}

C++ basic_string::_S_construct null not valid
stackoverflow例子
std::string 字符串不可以初始化为NULL,虽然能通过编译,但是会出现运行错误。
std::string 使用以下两种初始化为空的方式:

std::string s;//执行默认构造函数
std::string s = "";//执行拷贝构造函数
  • 当从map中提取一个元素时,会得到一个pair类型的对象。pair是一个模板类型,保存两个名为first和second的数据成员。前者保存关键字后者保存对应的值。

使用set

在这里插入图片描述

  • 如果给定关键字在set集合中,迭代器指向关键字。否则find返回尾喉迭代器。

11.2 关联容器概述

在这里插入图片描述

11.2 定义关联容器

在这里插入图片描述

初始化multimap或multiset

C++ Primer 中指出,size_type是一种类型,确保能够保存可能存在的最大向量中的所有元素,这句话究竟怎么理解?
答:
所谓 size_type 就是这个“vector 的 size 的类型”。size就是指vector有多少个元素,这个“多少个”也是个整型值,它的类型就是 size_type。
举个具体的例子:
假如有个vector,你调用size()来得到它有多少个元素,你要把这个值存在一个变量里,那么这个变量该声明为什么类型呢?int 型吗? 万一这个vector的元素数超过了 int 的范围呢? 要不就用 long? 万一也不够用呢??
所以,我们把 size_type 作为这个 size 值的类型,你只要声明一个 size_type 类型的变量就能存下“元素个数”的值。顺便一提,在 C 语言中 size_t 指的是系统中最大的整型类型,一般在前述情况下都是使用 size_t 类型的。size_t不是容器概念,而size_type是容器概念,没有容器不能使用。size_type和size_t没有本质区别。

在这里插入图片描述

11.2.2 关键字类型的要求

在这里插入图片描述

有序容器的关键字类型

使用关键字类型的比较函数

在这里插入图片描述

11.2.3 pair类型

  • 这是一个标准库类型,定义在头文件utility
  • 一个pair保存两个数据成员,是一个用来生成特定类型的模板
    在这里插入图片描述

创建pair对象的函数

在这里插入图片描述

11.3 关联容器操作

在这里插入图片描述

11.3.1 关联容器迭代器

在这里插入图片描述

set的迭代器是const的

在这里插入图片描述

遍历关联容器

关联容器和算法

在这里插入图片描述

11.3.2 添加元素

在这里插入图片描述
在这里插入图片描述

检测insert的返回值

在这里插入图片描述

展开递增语句

在这里插入图片描述

向multiset或multimap添加元素

在这里插入图片描述

11.3.3 删除元素

在这里插入图片描述

11.3.4 map的下标操作

在这里插入图片描述

使用下标操作的返回值

在这里插入图片描述

11.3.5 访问元素

在这里插入图片描述

对map使用find代替下标操作

在multimap或multiset中查找元素

在这里插入图片描述

一种不同的,面向迭代器的解决方法

在这里插入图片描述

equal_range函数

在这里插入图片描述

11.3.6 一个单词转换的map

在这里插入图片描述

单词转换程序

在这里插入图片描述

建立转换映射

在这里插入图片描述

生成转换文本

在这里插入图片描述

11.4 无序容器

在这里插入图片描述

使用无序容器

在这里插入图片描述

管理桶

在这里插入图片描述

无序容器对关键字类型的要求

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值