1.关联容器:
map关键字-值对,经常被称为关联数组
set中每个元素只有一个关键字,即只保存关键字的容器
①允许重复的关键字的容器名字都包含multi。
②不保持关键字顺序存储的容器的名字都以但粗unordered开头。
③无序容器以哈希函数来组织元素。
④关联容器的迭代器都是双向的。
map   set    multimap    multiset    / 无序集合   unordered_map  unordered_set     unordered_multimap    unordered_multiset.

2.使用map:map <string,size_t>word_count;
①指定关键字和值的类型
②map所使用的pair用first成员保存关键字,用second成员保存对应的值
使用set:set<string> exclude = {"the","but"};
exclude.find(word)返回一个迭代器,如果关键字在set中,迭代器指向该关键字,否则返回尾后迭代器。

3.map中的元素的pair类型的,这种类型定义在头文件utility中。
pairde的数据成员是public的。

4.关联容器额外的类型别名:
key_type:此容器类型的关键字类型
mapped_type:每个关键字关联的类型;只适用于map
value_type:对于set与key_type相同
对于map,为pair<const key_type,mapped_type>
map和set关键字是const的

5.当使用一个迭代器历遍一个map,multimap,set,multiset时,迭代器按关键字升序历遍元素。

6.向map和和向multimap,multiset添加元素的区别:
①前者只能添加不存在的元素。
②前者返回pair<std:map::value_type,bool>,后者返回指向新元素的迭代器。

7.set和multimap,unordered multimap不支持小标运算符。
对于map来说,如果使用一个不在容器中的关键字作为下标,会添加一个具有此关键字的元素到map中。但是如果使用at函数,若关键字不存在,抛出一个out_of_range异常。
①对map进行下标操作时,会获得一个mapped_type对象,但当解引用一个map迭代器时,会得到一个value_type对象。
②下标和at操作只适用于非const的map和unordered_map

8.
c.lower_bound(k)返回一个迭代器,指向第一个关键字不小于k的元素(指向第一个具有给定关键字的元素)
c.upper_bound(k)返回一个迭代器,指向第一个关键字大于k的元素(指向最后一个匹配给定关键字的元素之后的位置)--如果lower_bound(k)和upper_bound(k)返回相同迭代器,则说明不存在这个关键字。
c.equal_range(k)返回一个迭代器pair,表示关键字等于k的元素的范围,若k不存在,pair的两个成员均等于c.end();


9.getline不会跳过前导空格。


Chapter11(关联容器)--C++Prime笔记的更多相关文章

  1. 【c++ Prime 学习笔记】第11章 关联容器

    关联容器的元素按照关键字来保存和访问,而顺序容器的元素是按照在容器中的位置来保存和访问 关联容器支持高效的关键字查找和访问 2种关联容器: map中的元素是关键字-值对(key-value对),关键字 ...

  2. Chapter11:关联容器

    当用decltype来获得一个函数指针类型时,必须加上一个*来指出我们要使用一个给定函数类型的指针.decltype<CompareIsbn>*. map<string, int&g ...

  3. 高放的c++学习笔记之关联容器

    标准库提供8个关联容器 按关键字有序保存有(红黑树实现) set map multset 关键字可重复出现的set multimap  关键字可重复出现的map 无序保存 哈希实现 unorderre ...

  4. C++ Primer 读书笔记:第10章 关联容器

    第10章 关联容器 引: map set multimap multiset 1.pair类型 pair<string, int> anon anon.first, anon.second ...

  5. C++ Primer笔记7_STL之关联容器

    关联容器 与顺序容器不同,关联容器的元素是按keyword来訪问和保存的.而顺序容器中的元素是按他们在容器中的位置来顺序保存的. 关联容器最常见的是map.set.multimap.multiset ...

  6. C++ Primer 笔记——关联容器

    1.关联容器支持高效的关键字查找和访问,标准库提供8个关联容器. 2.如果一个类型定义了“行为正常”的 < 运算符,则它可以用作关键字类型. 3.为了使用自己定义的类型,在定义multiset时 ...

  7. C++学习笔记54:关联容器,函数对象

    关联容器的特点 1.每个关联容器都有一个键(key) 2.可以根据键高效查找元素 集合set 集合用来存储一组无重复的元素,由于集合的元素本身是有序的,可以高效地查找元素,也可以方便地指定大小范围的元 ...

  8. Chapter9(顺序容器) --C++Prime笔记

    PS:删除元素的成员函数并不检查其参数.在删除元素之前,程序员必须确保它们是存在的. 1.迭代器的范围是[begin,end)左闭右开. 2.对构成迭代器的要求: ①它们指向同一个容器中的元素或者容器 ...

  9. C++ Primer 学习笔记_34_STL实践与分析(8) --引言、pair类型、关联容器

    STL实践与分析 --引言.pair类型.关联容器 引言:     关联容器与顺序容器的本质差别在于:关联容器通过键[key]来存储和读取元素,而顺序容器则通过元素在容器中的位置顺序的存取元素. ma ...

随机推荐

  1. watch命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/kaishirenshi/p/7727986.html watch 命令详解: author:headsen  chen ...

  2. jdbc连接获取表名称

    1,Class.forName可以替换为mysql之类其他的数据库驱动 public Connection connect(String url,String username,String pw, ...

  3. web04-LoginServlet

    电影网站:www.aikan66.com项目网站:www.aikan66.com游戏网站:www.aikan66.com图片网站:www.aikan66.com书籍网站:www.aikan66.com ...

  4. Think In Java读书笔记:内部类覆盖及其初始化

    本文相关章节:第十章 内部类 10.10 内部类可以被覆盖吗 在读至本节第二个范例代码时(及下方的代码),我对输出结果中的第一个“Egg.Yolk()”很不理解,为什么它会第一个地方输出. 我起初认为 ...

  5. Scala入门系列(二):条件控制与循环

    条件控制与循环   if表达式 定义:if表达式是有值的,就是if或者else中最后一行语句返回的值. 例如:val isAdult = if (age > 18) 1 else 0 类型推断: ...

  6. 深入理解JAVA集合系列四:ArrayList源码解读

    在开始本章内容之前,这里先简单介绍下List的相关内容. List的简单介绍 有序的collection,用户可以对列表中每个元素的插入位置进行精确的控制.用户可以根据元素的整数索引(在列表中的位置) ...

  7. ABP ModuleZero 添加角色_创建角色是报错的问题解决方案

    ABP升级后,大概3.6.1以后,在.net framework里面,从官方下载的Module zero模板添加角色是出现下面错误. 这个问题,算是新版apb的一点小缺憾,好像在.net core的模 ...

  8. 用delphi开发activex打印控件

    http://blog.csdn.net/baronyang/article/details/4465468

  9. mysql只修改年月日,时分秒不变

    比如时间为 “2014-12-11 13:12:01”修改为“2014-09-26 13:12::01”修改内容为修改yyyy-mm-dd为对应的日期,时间不变.UPDATE result_road_ ...

  10. 斑马条码打印机GK888T打印标签是间隔的 ,不是连续的

    有间断的标签纸和连续的标签纸是两种不同的纸张类型, 打印机的标签感应器需要工作在不同的模式来跟踪感应它们. 打印机正确感应纸张才不会红灯闪烁,打印的内容才按文件设计打印到标签的对应位置上. 所以要在驱 ...