zoukankan      html  css  js  c++  java
  • c++ 13

    一、向量
    ...
    10.size/resize/clear/capacity/reserve
    1)向量的大小可增可减,使向量大小改变的函数包括:resize/push_back/pop_back/clear/insert/erase。
    2)向量的容量只增不减,只能通过reserve函数手动改变向量的容量。
    3)向量的大小的增加可以引发容量的增加,但是容量的改变不会引起大小的变化。
    4)通过resize()函数增加向量的大小,对于基本类型元素初始化为0,对于类类型元素用无参构造初始化。减少向量的大小,对于类类型元素会导致析构。
    5)通过reserve()函数增加向量的容量,但是新增部分既不会初始化,也不会调用构造函数。
    6)位于向量大小范围以外的元素,可以通过下标访问,但是其值是未定义的。
    7)通过resize()/reserver()函数所做的改变都发生在向量的尾部。
    11.insert/erase/::find/::sort
    1)insert/erase通过迭代器参数表示插入/删除位置,而且这两个函数会改变容器的大小。
    2)::find在通过两个迭代器器参数表示查找的范围,找到了就返回匹配元素的迭代器,找不到就返回查找范围的下限迭代器。
    3)::sort有两个版本,其中两参版本用“<”做比较,三参版本用比较器函数对象做比较。
    4)如果某种操作引起向量发生结构性的改变,之前所获得的迭代器将会失效,必须重新初始化。
    12.类类型的向量
    1)向量中的元素类可能需要支持:无参构造、拷贝构造、拷贝赋值、==、<。
    2)借助比较器对象可以实现更为灵活的排序规则。
    3)当一个容器被析构时,元素类型析构函数会被自动调用。
    void foo (void) {
      vector<Student> vs;
      vs.push_back (...);
      vs.push_back (...);
      vs.push_back (...);
      ...
    }
    vector<Student>* pvs =
      new vector<Student>;
    pvs -> push_back (...);
    pvs -> push_back (...);
    pvs -> push_back (...);
    ...
    delete pvs;
    vector<Student*>* pvs =
      new vector<Student*>;
    pvs -> push_back (new Student (...));
    pvs -> push_back (...);
    pvs -> push_back (...);
    ...
    for (vector<Student*>::iterator it =
      pvs -> begin (); it != pvs.end ();
      ++it)
      delete *it;
    delete pvs;
    练习:根据电影票房记录生成TOP10榜单。
    输入文件:movies.dat
    输出文件:top10.dat (票房前10位,按票房收入从高到低的顺序排列)

    二、双端队列(deque)
    1.向量所有的功能双端对列几乎都有,极少数不支持,如reserve等。
    2.双端队列相对于向量增加在序列首部的压入和弹出接口:push_front/pop_front,而且其效率与在尾部做相应的动作一样高效。
    3.为了维持两端的开放性,需要更复杂的动态内存管理,因此双端队列的空间和时间复杂度比向量略高。

    三、列表(list)
    1.sort - 排序
    2.unique - 将连续出现相同元素唯一化
    10 20 20 50 20 30
    | unique ()
    V
    10 20 50 20 30
    3.splice - 划分,将参数列表的一部分或全部划分到调用列表中。
    参数列表:10 20 30 40 50
    调用列表:0 100
    | splice
    V
    参数列表:10 50
    调用列表:0 20 30 40 100
    4.merge - 合并,将有序的参数列表合并到有序的调用列表中,使调用列表保持有序。

  • 相关阅读:
    面试题1:赋值运算符函数
    面试题:寻找热门查询
    面试题9:斐波那契数列
    Java中的volatile关键字
    二分查找算法
    面试题8:旋转数组的最小数字
    面试题:在O(1)空间复杂度范围内对一个数组中前后连段有序数组进行归并排序
    百度面试题:从海量日志中提取访问百度次数最多的IP
    面试总结
    java垃圾回收
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3780724.html
Copyright © 2011-2022 走看看