C++ Primer 笔记——关联容器
2017-08-02 20:47
267 查看
1.关联容器支持高效的关键字查找和访问,标准库提供8个关联容器。
2.如果一个类型定义了“行为正常”的 < 运算符,则它可以用作关键字类型。
3.为了使用自己定义的类型,在定义multiset时必须提供两个类型:自定义类类型以及比较操作类型(函数指针)。
4.pair的默认构造函数会对成员进行初始化。pair有如下操作:
5.关联容器定义了额外的类型别名:
一个map的value_type是一个pair,我们可以改变pair的值,但不能改变关键字成员的值。
6.虽然set定义了 iterator 和 const_iterator 但是都是只读的,和map的关键字一样不允许修改。
7.由于map和set包含不重复的关键字,因此插入一个已存在的元素对容器没有任何影响。
8.关联容器的insert操作:
对于不包含重复关键字的容器,添加单一元素的insert和emplace版本返回一个pair,pair的first是一个迭代器。指向具有给定关键字的元素,second是一个bool值,指出是插入成功还是已存在。
9.关联容器的删除操作:
对于保存不重复关键字的容器,erase的返回值总是0或1,若返回0.则表面想要删除的元素并不在容器中。
对于重复关键字的容器,删除元素的数量可能大于1。
10.关联容器的下标操作:
当对一个map进行下标操作时,会获得一个mapped_type对象,但当解引用一个map迭代器时,会得到一个value_type对象。
map的下表运算符返回一个左值,既可以读也可以写。
11.查找元素的操作:
后面三个方法如果没有找到指定元素,则迭代器指向一个此元素可以插入的位置。
12.新标准定义了4个无序关联容器,这些容器不是使用比较运算符来组织元素,而是使用一个哈希函数和关键字类型的==运算符。如果关键字类型固有就是无序的,或者性能测试发现问题可以用哈希技术解决,就可以使用无序容器。
13.管理桶
2.如果一个类型定义了“行为正常”的 < 运算符,则它可以用作关键字类型。
3.为了使用自己定义的类型,在定义multiset时必须提供两个类型:自定义类类型以及比较操作类型(函数指针)。
class test { public: test(int i) { m_id = i; } int m_id; }; bool compare_test(const test& t1, const test& t2) { return t1.m_id > t2.m_id; } std::multiset<test> test_set0; //test_set0.insert(test(5)); // 错误,test没有<运算符操作 std::multiset<test, decltype(compare_test)*> test_set(compare_test); // 构造函数里的compare_test可以写成&compare_test test_set.insert(test(5)); // 正确 test_set.insert(test(4)); // 如果test_set的构造函数参数里没有compare_test,插入第二个元素就会报错,因为调用了一个空指针函数来比较
4.pair的默认构造函数会对成员进行初始化。pair有如下操作:
5.关联容器定义了额外的类型别名:
一个map的value_type是一个pair,我们可以改变pair的值,但不能改变关键字成员的值。
6.虽然set定义了 iterator 和 const_iterator 但是都是只读的,和map的关键字一样不允许修改。
7.由于map和set包含不重复的关键字,因此插入一个已存在的元素对容器没有任何影响。
8.关联容器的insert操作:
对于不包含重复关键字的容器,添加单一元素的insert和emplace版本返回一个pair,pair的first是一个迭代器。指向具有给定关键字的元素,second是一个bool值,指出是插入成功还是已存在。
9.关联容器的删除操作:
对于保存不重复关键字的容器,erase的返回值总是0或1,若返回0.则表面想要删除的元素并不在容器中。
对于重复关键字的容器,删除元素的数量可能大于1。
10.关联容器的下标操作:
当对一个map进行下标操作时,会获得一个mapped_type对象,但当解引用一个map迭代器时,会得到一个value_type对象。
map的下表运算符返回一个左值,既可以读也可以写。
11.查找元素的操作:
后面三个方法如果没有找到指定元素,则迭代器指向一个此元素可以插入的位置。
12.新标准定义了4个无序关联容器,这些容器不是使用比较运算符来组织元素,而是使用一个哈希函数和关键字类型的==运算符。如果关键字类型固有就是无序的,或者性能测试发现问题可以用哈希技术解决,就可以使用无序容器。
13.管理桶
相关文章推荐
- C++ primer第二次阅读学习笔记(第10章:关联容器)
- C++ Primer学习笔记2--c++ 关联容器
- C++ Primer 学习笔记——关联容器初识
- C++ primer 【笔记】关联容器 set
- 【C++ Primer 学习笔记】: 容器和算法之【关联容器】
- 关联容器 - 1【C++ Primer 学习笔记 - 第十章】
- 《c++ primer》 第11章 关联容器 学习笔记
- 11、C++ Primer 4th 笔记,关联容器(1)
- c++ primer(第五版)学习笔记及习题答案代码版(第十一章)关联容器
- 【C++ Primer】【学习笔记】【第十章】关联容器之:multimap和multiset类型
- C++ Primer 学习笔记——关联容器的操作
- c++ primer(第五版)笔记 第十一章 关联容器
- C++ Primer 学习笔记_34_STL实践与分析(8) --引言、pair类型、关联容器
- 【C++ Primer 学习笔记】 chapter 10 关联容器
- C++ Primer 学习笔记:关联容器入门 set && map
- c++ primer 学习笔记10--关联容器
- 12、C++ Primer 4th 笔记,关联容器(2)
- C++ primer阅读笔记---------------关联容器
- C++ Primer 学习笔记_34_STL实践与分析(8) --引言、pair类型、关联容器
- C++ primer【笔记】关联容器 map