参考链接:
1.STL中heap的用法
vec.begin() 相当于下标为0;
故vec.begin()+n 为第n+1 个,与数组相同,n就是数组下标!vector 的数组长度就是size(),
相当于数组的长度就是size(), 与capacity 无关。
当访问”size 与capacity 之间“,就会报错。2的特殊情况是,end()访问,end()超过size时,也是越界。
- 关于heap,自定义的比较函数,“小于号”则最大堆(同默认),”大于号“才是最小堆!
- 注意到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);
注意到,虽然5中说了它们的相同点,但是在范围上[first,last),make_heap都行,pop要求区间上的本来是堆结构(从堆结构中pop,放到最后),push要求添加元素的前面[first,last-1)是堆结构。sort没用过不知道。
注意pop后还是堆,第一个还是最值。
end()元素后,即size位置,与capacity无关!
C++容器中 size(), capacity, reserve() ,resize() 函数讲解
这里涉及到不同编译器对capacity的扩展的实现方法,比如VS2010就是满了之后,如果还要再加,则扩容1.5倍,比如012346913另外注意到满的情况的特征,即size=capacity.
STL算法-交集,并集,差集,对称差
注意到前提是两个数组序列已排好.
另外,注意到resize在实现过程中的重要作用,不然会报错
再给出1个例子:
example1