读书笔记《C++ Primer》第五版——第十一章 关联容器
2017-11-25 23:03
381 查看
定义关联容器
初始化为另外一个同类型的拷贝C++11允许我们对关联容器值初始化,如
map<string, string> m = { {"1", "2"}, {"3", "4"} }
有序容器的关键字类型
必须满足严格弱序,可提供一个函数指针来代替运算符<,如set<Sales_data, decltype(compareIsbn)*> bookstore(compareIsbn)
map的元素pair操作有:
pair<T1, T2> p pair<T1, T2> p(v1, v2) pair<T1, T2> p = {v1, v2} make_pair(v1, v2)
关联容器类型别名
key_typemap_type map类型才有
value_type 对于set,等价于key_type;对于map,为
pair<const key_type, mapped_type>
set的迭代器和map的迭代器的first都是const,无法修改
关联容器一般不适用泛型算法
关联容器的元素插入
c.insert(v) c.emplace(args) 返回一个pairc.insert(b, e) c.insert(il) 返回void
c.insert(p, v) c.emplace(p, args) p为提示,返回一个pair
注意:返回的pair->first为指向新增元素的迭代器;pair->second为bool值,表示是否插入或已经存在
map元素的下标操作
c[k] 返回关键字为k的元素;若不存在,添加关键字为k的元素,并进行值初始化c.at(k) 返回关键字为k的元素;若不存在则抛出out_of_range的异常
查找操作
c.find(k) 返回迭代器,执行第一个关键字为k的元素;不存在则返回尾后迭代器c.count(k) 返回关键字等于k的元素的数量
c.lower_bound(k) 返回第一个关键字不小于k的元素
c.upper_bound(k) 返回第一个关键字大于k的元素
c.equal_r
9243
ange(k) 返回一个pair,first=c.lower_bound(k), second=c.upper_bound(k)
无序容器
无序容器必须提供hash模板,标准库为内置类型、string、智能指针定义了hash,可提供函数来完成无序容器的构造,如:unordered_multiset<Sales_data, decltype(hasher)*, decltype(eqOp)*> bookStore(42, haser, eqOp)
相关文章推荐
- 《C++ Primer》读书笔记第十一章-2-关联容器操作
- c++ primer(第五版)学习笔记及习题答案代码版(第十一章)关联容器
- c++ primer(第五版)笔记 第十一章 关联容器
- 《C++ Primer》读书笔记第十一章-1-关联容器概述
- C++ Primer : 第十一章 : 关联容器之关联容器的迭代器和操作
- c++primer(第五版) 第十一章 关联容器习题答案
- 《C++ Primer 4th》读书笔记 第10章-关联容器
- 读书笔记《C++ Primer》第五版——第九章 顺序容器
- C++ Primer 读书笔记 Charpter 10 关联容器
- c++ primer 笔记,第十一章(关联容器)
- C++ Primer 读书笔记:第10章 关联容器
- C++ Primer : 第十一章 : 关联容器之概述、有序关联容器关键字要求和pair类型
- C++ Primer : 第十一章 : 关联容器示例: 一个单词转换的map
- C++primer第五版笔记-第十一章关联容器
- 《C++primer(第五版)》学习之路-第十一章:关联容器
- 读书笔记:C++ primer 5th edition--chapter11.关联容器
- C++ primer 读书笔记系列——(7)关联容器
- c++ primer第五版(中文)习题答案 第十章第二节第二小节-写容器元素的算法
- 《C++ Primer 4 Answer Book》 整理[9]——第10章 关联容器
- 《C++ Primer 4th》读书笔记 第9章-顺序容器