zoukankan      html  css  js  c++  java
  • C++ Primer chap6

    1  为了提高效率 ,实际上vector 并不是随每一个元素的插入而增长自己, 而是当vector 需要增长自身时, 它实际分配的空间比当前所需的空间要多一些。

    2 为了定义一个容器对象 我们必须先包含相关联的头文件 应该是下列头文件之一 
    #include <vector>
    #include <list>
    #include <deque>
    #include <map>
    #include <set>

    容器对象的定义以容器类型的名字开始, 后面是所包含的元素的实际类型。例如 
    vector< string > svec;

    const int list_size = 64;
    list< int > ilist;

    list< int > ilista( list_size );

    3   iterator 是vector 类中定义的typedef ,以下语法 
    vector<string>::iterator

      引用了vector 类中内嵌的iterator typedef ,并且该vector 类包含string 类型的元素 ,为了把每个string 元素打印到标准输出上

    我们可以这样写 
    for( ; iter != iter_end; ++iter )
         cout << *iter << '\n'; 

    当然 这里*iter 的运算结果就是实际的string 对象  

    除了iterator 类型 每个容器还定义了一个const iterator 类型 后者对于遍历const 容器
    是必需的 const iterator 允许以只读方式访问容器的底层元素

    4 容器类的对象可以做插入,删除,对换等各种操作。

    #include <algorithm> 包含了一些常用的泛型算法如find(), sort (), merge()等。

    5 注意一个自己写程序的一个缺点,经常犯“见树木而不见森林”的错误。程序编译不通过,忙着去找语法的错误,从网上查资料,

    原来是相应的头文件没有包含。删除链表节点时,无故多了一个节点,忙着打断点跟踪调试,原来错误在于前面有一句该删除的没删除,

    递归函数算法是对的,但是运行结果却很奇怪,原来是递归错了,这都是“代码级”的错误,不是逻辑上的,而在于程序整体的把握。

    所以以后细节上找不到错误,就从整体上靠,全面的检查一遍程序的流程。

    6 C++对向量,链表,栈,队列及map和set的支持比较完善,编写上层应用程序时直接调用就ok了。

  • 相关阅读:
    李洪强九宫格的实现
    iOS开发多线程篇 11 —自定义NSOperation
    CALayer3-层的属性
    网络编程小结
    iOS开发多线程篇 10 —NSOperation基本操作
    CALayer2-创建新的层
    iOS开发之多文件上传
    三级联动
    用 ERD 盘解决 Win8 自己主动更新后不能启动的问题
    hdu1028(母函数+DP)
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2196385.html
Copyright © 2011-2022 走看看