1、set和multisetset的特性:
(1)所有元素都会根据元素的键值自动被排序。
(2)set是集合,它的元素的键值就是实值,实值就是键值,不允许两个元素有相同的值。
(3)不可以通过set的iterator来改变元素的值,因为set的元素值就是键值,改变键值会违反元素排列的规则。
(4)在客户端对set进行插入或删除操作后,之前的迭代器依然有效。当然,被删除的元素的迭代器是个例外。...
分类:
其他好文 时间:
2016-05-13 00:41:14
阅读次数:
188
STL中定义的set要求元素不得重复且已经排序。而set算法要求的都是有序区间(输出也是有序的),但元素可以重复出现。STL提供了4个set相关的算法,分别是并集(union)、交集(intersection)、差集(difference)和对称差集(symmetric difference),这4个算法接受的set必须是有序区间,都至少接受4个参数,分别表示两个set区间。一般而言,set算法前4...
分类:
编程语言 时间:
2016-05-13 00:18:51
阅读次数:
254
Why would we go to such ludicrous lebgths to explain the RB_TREE?
《STL源码剖析》上给了我们一个很好的解释:(见202页)
所谓树形平衡与否,并没有一个绝对的测量标准。“平衡”的大致意义是:没有一个节点过深(深度即就是“根节点至任一节点的路径长度,即所谓该节点的深度”,在数值上与路径长度相等)。不同的平衡条件,造就出不同的...
分类:
编程语言 时间:
2016-05-12 23:45:20
阅读次数:
375
STL中的每个算法都非常精妙,接下来的几天我想集中学习一下STL中的算法。
ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。
ForwardIter upper_bound(ForwardIter...
分类:
编程语言 时间:
2016-05-12 16:46:36
阅读次数:
125
1)thinking in java 2)effective c++ 3)more effective c++ 4)visual c++游戏编程基础 5)STL源码剖析 ...
分类:
其他好文 时间:
2016-05-11 01:22:42
阅读次数:
182
1、vector1、vector特性(1)vector有自动扩容操作,每次扩容伴随着“配置新空间 / 移动旧数据 / 释放旧空间”的操作,因此有一定时间成本。
(2)vector提供了reserve接口,如果能够对元素个数有大概了解,可以一开始就分配合适的空间。
(3)vector的内存空间是连续的,对插入元素的操作而言,在vector尾部插入才是合适的选择。维护的是一个连续线性空间,所以vec...
分类:
其他好文 时间:
2016-05-07 10:57:37
阅读次数:
196