zoukankan      html  css  js  c++  java
  • 第九章顺序容器重学C++之《 C++ PRIMER》

    本章讲解了顺序容器以及他们通用的接口操作。

    涉及的容器有:顺序容器vector,list,deque,并提及了stack,queue,priority_queue这三种容器适配器。最常用的容器是vector,支持对元素的快速访问。

    主要内容:

    1 容器的定义和初始化

    2 迭代器的操作。迭代器的元素范围是左闭合区间,即[  )。

    3 顺序容器的操作

    插入和删除。

    比较.

    设置容器大小。

    赋值和swap.

    4 vector容器的自增长。对于大部分应用,vector容器都是最好的。

    因为这种特性使得比起list和deque,vector的增长效率更高。

    理论上,vector容器为了实现快速的随机访问,元素以连续的方式存放。当插入新的元素时,由于空间不够可能需要分配新的内存空间(分配新空间,存放原来的和新的元素,撤销旧的空间),这会导致性能很慢。

    实际上,为了使容器实现快速的内存分配,实际分配的容量比当前所需的空间多一些。vector容器预留了这些额外的存储区,用于存放新添加的元素。于是不必为新添加的元素重新分配容器。(当每次空间不够时,容器不是只添加了一个元素的空间,而是添加了一大块空间------实际的实现中,常出现增加当前空间的一倍)

    5 容器的选用

    需要考量的因素:1中间位置插入删除的代价。2元素随机访问的代价。

    容器选择的法则:

    (1)如果程序随机访问,则选择vector和deque.

    (2)如果需要中间位置插入或者删除,使用list。

    (3)如果程序在首尾插入或删除,使用deque.

    (4)如果读取输入时在中间位置插入元素,然后随机访问。则输入时使用list,然后重排容器使之适合顺序访问,然后复制到vector

     

    6 string类型

    在某些方面,string可视为字符容器。因此支持大多数vector容器的操作。

    初始化

    修改元素

    字符串替换

    字符(串)查找

    比较

    7容器适配器(理解上也是容器)

    容器适配器是让一种已存在的容器类型采用,采用另一种不同的抽象类型的工作方式实现。如stack就可以让任何一种顺序容器以栈的方式工作。简单说来,容器适配器是由容器构造。用以提供另一种工作方式。

    stack建立在三种顺序容器之上,queue(队列?)只能建立在list(链表?)之上,priority_queue只能建立在vector和deque上。默认情况,stack建立在deque之上。

     

     

  • 相关阅读:
    Java基本语法(一)
    JAVA菜鸟入门HelloWorld
    python 练习题-质数
    python 字符串转运算符
    python 提取不重复的整数
    python 句子逆序
    python 数字颠倒
    python 字符个数统计
    python 练习题-计算字符个数
    python int型正整数在内存中存储为1的个数
  • 原文地址:https://www.cnblogs.com/catkins/p/5270798.html
Copyright © 2011-2022 走看看