STL容器

Posted on 2007-08-03 22:37  阿·凡  阅读(173)  评论(0)    收藏  举报
容器类
向量vector  <vector> 
可以用常数时间访问和修改任意元素,在序列尾部进行插入和删除时,具有常数时间复杂度,对任意项的插入和删除就有的时间复杂度与到末尾的距离成正比,尤其对向量头的添加和删除的代价是惊人的高的 
 
双端队列deque  <deque>
基本上与向量相同,唯一的不同是,其在序列头部插入和删除操作也具有常量时间复杂度
 
表list  <list>
对任意元素的访问与对两端的距离成正比,但对某个位置上插入和删除一个项的花费为常数时间。
 
队列queue  <queue>
插入只可以在尾部进行,删除、检索和修改只允许从头部进行。按照先进先出的原则。
 
堆栈stack  <stack>
堆栈是项的有限序列,并满足序列中被删除、检索和修改的项只能是最近插入序列的项。即按照后进先出的原则
 
集合set  <set>
由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序,具有快速查找的功能。但是它是以牺牲插入删除操作的效率为代价的
 
多重集合multiset  <set>
和集合基本相同,但可以支持重复元素具有快速查找能力
 
映射map  <map>
由{键,值}对组成的集合,以某种作用于键对上的谓词排列。具有快速查找能力 
 
多重映射multimap  <map>
比起映射,一个键可以对应多了值。具有快速查找能力
 
常用函数
empty       容器中没有元素时返回true,否则返回false
max_size    返回容器中最大元素个数
size        返回容器中当前元素个数
operator=   将一个容器赋给另一个容器
operator<   如果第一个容器小于第二个容器,返回true,否则返回false
operator<=  如果第一个容器小于或等于第二个容器,返回true,否则返回false
operator>   如果第一个容器大于第二个容器,返回true,否则返回false
operator>=  如果第一个容器大于或等于第二个容器,返回true,否则返回false
operator==  如果第一个容器等于第二个容器,返回true,否则返回false
operator!=  如果第一个容器不等于第二个容器,返回true,否则返回false
swap        交换两个容器的元素
 
begin    该函数两个版本返回iterator或const_iterator,引用容器第一个元素
end      同上返回iterator或const_iterator,引用容器最后一个元素后面一位
rbegin   同上reverse_iterator或const_reverse_iterator,引用容器最后一个元素
rend     返回reverse_iterator或const_reverse_iterator,引用容器第一个元素前面一位
erase    从容器中清除一个或几个元素
clear    清除容器中所有元素
 
下面显示了顺序容器和关联容器中常用的typedef,这些typedef常用于变量、参数和函数返回值的一般性声明。
value_type       容器中存放元素的类型
reference        容器中存放元素类型的引用
const_reference  容器中存放元素类型的常量引用,这种引用只能读取容器中的元素和进行const操作
pointer          容器中存放元素类型的指针
iterator         指向容器中存放元素类型的迭代器
const_iterator   指向容器中存放元素类型的常量迭代器,只能读取容器中的元素
reverse_iterator 指向容器中存放元素类型的逆向迭代器,这种迭代器在容器中逆向迭代
const_reverse_iterator 指向容器中存放元素类型的逆向迭代器,只能读取容器中的元素
difference_type  引用相同容器的两个迭代器相减结果的类型(list和关联容器没有定义operator-)
size_type        用于计算容器中项目数和检索顺序容器的类型(不能对list检索)

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3