标签:
无需指定预先分配内存大小就可以动态扩展,原因是存储在不连续的内存空间,由指针将其链接起来。
因为是链表所以随机访问的性能不好,但是在任何位置插入删除的性能比vector好(链表的特性)
特点:
加粗的和vector一样
assign()
back()
clear()
empty()
end()
erase()
front()
get_allocator()
insert()
max_size()
merge()合并两个list
//自己和lst合并并排序
merge(list &lst);
//按照某种规则排序
merge(list &lst, Comp compfunction );
pop_back()
pop_front() 删除第一个元素
push_back()
push_front() 在list的头部添加一个元素
rbegin()
remove() 从list删除元素
//删除链表中所有值为val的元素
void remove( const TYPE &val );
remove_if() 按指定条件删除元素
rend()
resize() 改变list的大小
//把list的大小改变到num。被加入的多余的元素都被赋值为val
void resize( size_type num, TYPE val );
reverse()
size()
sort() 给list排序
void sort();//为链表排序,默认是升序
void sort( Comp compfunction );//采用指定函数compfunction来判定两个元素的大小。
splice() 合并两个list
void splice( iterator pos, list &lst );//把lst连接到pos的位置
void splice( iterator pos, list &lst, iterator del );//插入lst中del所指元素到现链表的pos上
void splice( iterator pos, list &lst, iterator start, iterator end );//用start和end指定范围。
swap()
unique() 删除list中重复的元素
void unique();//删除链表中所有重复的元素
void unique( BinPred pr );// 指定pr,则使用pr来判定是否删除。
在序列两端添加和删除元素的基本序列容器。
用多个连续内存空间存储数据。
结合了list和vector的特点,处在两者的平衡。
特点:
Constructors 创建一个新双向队列
deque();//创建一个空双向队列
deque( size_type size );// 创建一个大小为size的双向队列
deque( size_type num, const TYPE &val ); //放置num个val的拷贝到队列中
deque( const deque &from );// 从from创建一个内容一样的双向队列
deque( input_iterator start, input_iterator end );
// start 和 end - 创建一个队列,保存从start到end的元素。
Operators 比较和赋值双向队列
可以使用[]操作符访问双向队列中单个的元素
assign() 设置双向队列的值
//start和end指示的范围为双向队列赋值
void assign( input_iterator start, input_iterator end);
void assign( Size num, const TYPE &val );//设置成num个val。
at() 返回指定的元素
reference at( size_type pos ); 返回一个引用,指向双向队列中位置pos上的元素
back() 返回最后一个元素
reference back();//返回一个引用,指向双向队列中最后一个元素
begin() 返回指向第一个元素的迭代器
iterator begin();//返回一个迭代器,指向双向队列的第一个元素
clear() 删除所有元素
empty() 返回真如果双向队列为空
end() 返回指向尾部的迭代器
erase() 删除一个元素
iterator erase( iterator pos ); //删除pos位置上的元素
iterator erase( iterator start, iterator end ); //删除start和end之间的所有元素
//返回指向被删除元素的后一个元素
front() 返回第一个元素的引用
get_allocator() 返回双向队列的配置器
insert() 插入一个元素到双向队列中
iterator insert( iterator pos, size_type num, const TYPE &val ); //pos前插入num个val值
void insert( iterator pos, input_iterator start, input_iterator end );//插入从start到end范围内的元素到pos前面
max_size() 返回双向队列能容纳的最大元素个数
pop_back() 删除尾部的元素
pop_front() 删除头部的元素
push_back() 在尾部加入一个元素
push_front() 在头部加入一个元素
rbegin() 返回指向尾部的逆向迭代器
rend() 返回指向头部的逆向迭代器
resize() 改变双向队列的大小
size() 返回双向队列中元素的个数
swap() 和另一个双向队列交换元素
void swap( deque &target );// 交换target和现双向队列中元素
vector 是一段连续的内存块,而deque 是多个连续的内存块, list 是所有数据元素分开保存,可以是任何两个元素没有连续。
vector 的查询性能最好,并且在末端增加数据也很好,除非它重新申请内存段;适合高效地随机存储。
list 是一个链表,任何一个元素都可以是不连续的,但它都有两个指向上一元素和下一元素的指针。所以它对插入、删除元素性能是最好的,而查询性能非常差;适合大量地插入和删除操作而不关心随机存取的需求。
deque 是介于两者之间,它兼顾了数组和链表的优点,它是分块的链表和多个数组的联合。所以它有list好的查询性能,有vector好的插入、删除性能。
如果你需要随即存取又关心两端数据的插入和删除,那么deque是最佳之选。
标签:
原文地址:http://blog.csdn.net/gr47725812/article/details/51348241