c++primer第十章笔记

原创 2015年07月08日 21:56:06

10.1  pair类型

1:关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。

2:map 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。

3:pair类型在 utility 头文件中定义

4:pairs类型提供的操作:

pair<T1, T2>  p1;             创建一个空的 pair 对象,它的两个元素分别是 T1 和 T2 类型,采用值初始化(第 3.3.1 节)  

pair<T1, T2> p1(v1, v2);  创建一个 pair 对象,它的两个元素分别是 T1 和 T2 ,其 中 first 成员初始化为 v1,而 second 成员初始化为 v2 
make_pair(v1, v2)             以 v1 和 v2 值创建一个新 pair 对象,其元素类型分别是 v1 和 v2 的类型 

p1 < p2                                两个 pair 对象之间的小于运算,其定义遵循字典次序:如果 p1.first < p2.first 或者 !(p2.first < p1.first) && p1.second < p2.second,则返回 true 

p1 == p2                            如果两个 pair 对象的 first 和 second 成员依次相等,则这两个对象相等。该运算使用其元素的 == 操作符 

p.first                                 返回 p 中名为 first 的(公有)数据成员 
p.second                          返回 p 的名为 second 的(公有)数据成员

10.3 map类型

1:要使用 map对象,则必须包含 map 头文件。在定义 map 对象时,必须分:别指明键和值的类型(value type)

2:map的构造函数 
map<k, v> m;       创建一个名为 m 的空 map 对象,其键和值的类型分别为 k 和 v
map<k, v>  m(m2); 创建 m2 的副本 m,m 与 m2 必须有相同的键类型和值类型 
map<k, v>  m(b, e); 创建 map 类型的对象 m,存储迭代器 b 和 e 标记的范围内所有元素的副本。元素的类型必须能转换为 pair<const k, v>

3:map 定义的类型

value_type 是存储元素的键以及值的 pair 类型,而且键为 const。

map<K, V>::key_type 在 map 容器中,用做索引的键的类型 
map<K, V>::mapped_type 在 map 容器中,键所关联的值的类型 
map<K, V>::value_type 一个 pair 类型,它的 first 元素具有 const map<K, V>::key_type 类型,而 second 元素则为 map<K, V>::mapped_type 类型

value_type 是 pair 类型,它的值成员可以修改,但键成员不能修改

4:map::insert 的使用

map容器提供的 insert操作 
m.insert(e)  e 是一个用在 m 上的 value_type 类型的值。如果键(e.first)不在 m 中,则插入一个值为 e.second 的新元素;如果该键在 m 中已存在,则保持 m 不变。该函数返回一个 pair 类型对象,包含指向键为 e.first 的元素的 map 迭代器,以及一个 bool 类型的对象,表示是否插入了该元素 
m.insert(beg, end) beg 和 end 是标记元素范围的迭代器,其中的元素必须为 m.value_type 类型的键-值对。对于该范围内的所有元素,如果它的键在 m 中不存在,则将该键及其关联的值插入到 m。返回 void 类型 
m.insert(iter, e) e 是一个用在 m 上的 value_type 类型的值。如果键(e.first)不在 m 中,则创建新元素,并以迭代器 iter 为起点搜索新元素存储的位置。返回一个迭代器,指向 m 中具有给定键的元素

5:查找并读取 map 中的元素 

不修改 map对象的查询操作 
m.count(k)  返回 m 中 k 的出现次数 
m.find(k)  如果 m 容器中存在按 k 索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++ Primer Plus第六版 第十四章 编程练习答案

这章有点难的= =。。。那个虚MI和模板把我看的有点晕QAQ //main.cpp #include #include "winec.h" int main() { using std::cin...
  • zhaoshu01234
  • zhaoshu01234
  • 2015年12月05日 13:52
  • 1465

C++primer第五版第十一章学习笔记

练习11.1:描述map和vector的不同。 vector这种顺序容器,元素在其中按顺序存储,每个元素都有唯一对应的位置编号,所有操作都是按编号进行的。例如,获取元素,插入删除元素,遍历元素。底层的...
  • sunhero2010
  • sunhero2010
  • 2015年11月14日 09:32
  • 1264

C++primer第五版第十二章学习笔记

练习12.1:在此代码的结尾,b1和b2各包含多少个元素? StrBlob b1; { StrBlob b2 = {"a", "an", "the"}; b1 = b2; ...
  • sunhero2010
  • sunhero2010
  • 2015年11月17日 09:11
  • 1998

《C++ Primer Plus第6版中文版》学习笔记(第十章)

  • 2016年01月19日 02:55
  • 1.07MB
  • 下载

《C++ primer》第五版 第十章 笔记

泛型算法:算法即因为他们实现了一些经典算法的公共接口,泛型即他们可以用于不用类型的元素很多种容器类型。 大多数算法都定义在algorithm,一部分数值算法定义在头文件numeic中。 find(...
  • weiliangdemo
  • weiliangdemo
  • 2015年06月11日 10:25
  • 273

c++ primer读书笔记-第十章 关联容器

c++ primer读书笔记-第十章 关联容器关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。 关联容器(Associ...
  • u010560443
  • u010560443
  • 2015年07月07日 19:11
  • 231

【C++ Primer】【学习笔记】【第十章】关联容器之:pair类型

pair类型和容器一样,也是一种模板类型。 一、pair类型对象的创建和初始化 创建pair对象时,必须提供两个类型名。如下: pair anon;            // 调用默认...
  • jay_yin
  • jay_yin
  • 2015年01月09日 15:14
  • 321

【C++ Primer】【学习笔记】【第十章】关联容器之:set类型

一、set容器定义 set容器支持大部分的map操作,但如下两种操作除外: 1、set不支持下标操作; 2、set没有定义mapped_type类型。 注:set存储的元素仅仅是键,而不存储所...
  • jay_yin
  • jay_yin
  • 2015年02月06日 16:53
  • 414

C++Primer读书笔记(第十章)

第十章关联容器          关联容器支持通过键来高效地查找和读取元素。 10.1 引言:pair类型          pair类型在utility头文件中定义。pair包含两个数值,也是...
  • dy01dy
  • dy01dy
  • 2014年06月21日 17:44
  • 435

c++ primer(第五版)笔记 第十章 泛型算法(2)

#include #include #include #include using std::cout; using std::cin; using std::endl; using std::vec...
  • u013691335
  • u013691335
  • 2014年09月26日 22:51
  • 317
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++primer第十章笔记
举报原因:
原因补充:

(最多只允许输入30个字)