1、在调用front或back函数之前,必须保证容器非空,否则所有操作都没有意义。
2、使用下标运算的另一个可选方案是at成员函数,这个函数的行为和下标运算符相似,但是如果给出的下标无效,at函数将抛出out_of_range异常。
3、容器类型提供的了通用的insert操作在容器的任何位置插入元素,并支持特定的push_back和push_front操作在容器首部或尾部插入新元素。类似的,容器类型提供了通用的erase操作和特定的pop_front和pop_back操作来删除容器内的元素。
4、Vector容器类型不支持pop_front操作。
5、赋值操作符首先删除其左操作数容器中的所有元素,然后将右操作数容器的所有元素插入到左边容器中。
6、由于assign操作首先删除容器中原来存储的所有元素,因此,传递给assign函数的迭代器不能指向调用该函数的容器内的元素。
7、带有一对迭代器参数的assign操作允许我们将一个容器的元素赋值给另一个不同类型的容器。
8、关于swap的一个重要问题在于:该操作不会删除或插入如何元素,而且保证在常量时间内实现交换。由于容器内没有移动任何元素,因此迭代器不会失效。
9、Vector必须重新分配存储空间,用来存放原来的元素以及新添加的元素:存放在旧存储空间中的元素被复制到新存储空间里,接着插入新元素,最后撤销旧的存储空间。
10、为了使Vector容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些。
11、size指容器当前拥有的元素个数,而capacity则指容器在必须分配新存储空间之前可以存储的元素总数。
12、当Vector容器不得不分配新的存储空间时,以加倍当前容量的分配策略实现重载分配。
13、对于vector容器,除了容器尾部外,其他任何位置上的插入(或删除)操作都要求移动被插入(或删除)元素右边所有的元素。
14、选择容器类型的法则:(1)如果程序要求随机访问元素,则应使用vector或deque容器。(2)如果程序必须在容器中间位置插入或删除元素,则应采用list容器。(3)如果程序不是在容器的中间位置,而是在容器首部或尾部插入或删除元素,则应采用deque容器。(4)如果只需要在读取输入时在容器的中间位置插入元素,然后需要随即访问元素,则可以考虑在输入时将元素读入到一个list容器,接着对此容器重新排序,使其适合顺序访问,然后将排序后的list容器复制到一个vector容器。
15、string类型与vector容器不同的是,它不仅支持以栈方式操纵容器:在string类型中不能使用front、back和pop_back操作。
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。