c++ primer 学习摘抄之四(第六章 抽象容器类型)

来源:互联网 发布:java push 编辑:程序博客网 时间:2024/05/16 17:48

1.两种基本的关联容器类型是map(映射)和set(集合)

2.三种基本的顺序容器类型为:vector、list和deque。vector和deque是一段连续的内存区间,list不是连续的内存区间,选择这些容器有一些准则:

  如果需要随机访问容器,vector比list好得多

  如果已知要存储元素的个数,vector也比list好得多

  如果需要的不只是在容器两端插入和删除元素,list比vector好的多

  除非在容器首部或尾部插入或删除元素,否则vector比deque好得多

3.vector的容量和长度不是一个概念(要得到容量,可以使用函数capcity(),得到长度,需要使用size().),它实际分配的空间要比当前所需的空间多一些,当vector动态增长而用尽预留空间时,vector会申请一个更大的空间并将数据拷贝过去。因此,如果元素为小数据类型或简单的对象时,vector比list性能要好得多,如果元素为复杂数据类型,那么list比vector性能好。

4.迭代器除了iterator类型,还有const iterator类型,主要是用于变量const的容器,它允许以只读方式对底层数据进行读取。

5.string类提供了一套查找函数,都是以find的各种变化形式命名的。如果查找结果不存在,可以返回一个特定值string::npos,如果查找结果返回的是个索引值,虽然一般是int形的,但标准的和可移植的还是应写为string::size_type,如:

   string::size_type pos = 0;

6.对于map容器,利用下标操作符把map初始化至一组元素集合中,会使每个值先初始化为默认缺省值,然后再赋值为显式的值。如果元素类型为对象,则此种初始化会影响程序性能

7.同一类型的两个栈可以比较相等、不相等、小于、大于、小于等于以及大于等于关系。只要底层元素类型支持等于和小于操作符即可,对于这些操作,栈中元素被依次比较,第一对不相等的元素决定了小于或大于关系

 

原创粉丝点击