vector 注意

参考链接:
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值