vector 注意

来源:互联网 发布:星图数据 双十一 编辑:程序博客网 时间:2024/05/17 17:57

参考链接:
1.STL中heap的用法

  1. vec.begin() 相当于下标为0;
    故vec.begin()+n 为第n+1 个,与数组相同,n就是数组下标!

  2. vector 的数组长度就是size(),
    相当于数组的长度就是size(), 与capacity 无关。
    当访问”size 与capacity 之间“,就会报错。

  3. 2的特殊情况是,end()访问,end()超过size时,也是越界。

  4. 关于heap,自定义的比较函数,“小于号”则最大堆(同默认),”大于号“才是最小堆
  5. 注意到heap的4个函数的参数都相同,也同返回值。
void make_heap(first_pointer,end_pointer,compare_function);void pop_heap(first_pointer,end_pointer,compare_function);void push_heap(first_pointer,end_pointer,compare_function);void sort_heap(first_pointer,end_pointer,compare_function);
  1. 注意到,虽然5中说了它们的相同点,但是在范围上[first,last),make_heap都行,pop要求区间上的本来是堆结构(从堆结构中pop,放到最后),push要求添加元素的前面[first,last-1)是堆结构。sort没用过不知道。

  2. 注意pop后还是堆,第一个还是最值。

  3. end()元素后,即size位置,与capacity无关!

  4. C++容器中 size(), capacity, reserve() ,resize() 函数讲解
    这里涉及到不同编译器对capacity的扩展的实现方法,比如VS2010就是满了之后,如果还要再加,则扩容1.5倍,比如012346913

    另外注意到满的情况的特征,即size=capacity.

  5. STL算法-交集,并集,差集,对称差
    注意到前提是两个数组序列已排好.
    另外,注意到resize在实现过程中的重要作用,不然会报错
    再给出1个例子:
    example1

0 0
原创粉丝点击