C++ Deque(雙向隊(duì)列)
是一種優(yōu)化了的、對序列兩端元素進(jìn)行添加和刪除操作的基本序列容器。它允許較為快速地隨機(jī)訪問,但它不像vector 把所有的對象保存在一塊連續(xù)的內(nèi)存塊,而是采用多個連續(xù)的存儲塊,并且在一個映射結(jié)構(gòu)中保存對這些塊及其順序的跟蹤。向deque 兩端添加或刪除元素的開銷很小。它不需要重新分配空間,所以向末端增加元素比vector 更有效。
實(shí)際上,deque 是對vector 和list 優(yōu)缺點(diǎn)的結(jié)合,它是處于兩者之間的一種容器。
Deque 的特點(diǎn):
(1) 隨機(jī)訪問方便,即支持[ ] 操作符和vector.at() ,但性能沒有vector 好;
(2) 可以在內(nèi)部進(jìn)行插入和刪除操作,但性能不及list ;
(3) 可以在兩端進(jìn)行push 、pop ;
(4) 相對于verctor 占用更多的內(nèi)存。
雙向隊(duì)列和向量很相似,但是它允許在容器頭部快速插入和刪除(就像在尾部一樣)。
1.Constructors 創(chuàng)建一個新雙向隊(duì)列
語法:
deque();//創(chuàng)建一個空雙向隊(duì)列
deque( size_type size );// 創(chuàng)建一個大小為size的雙向隊(duì)列
deque( size_type num, const TYPE &val ); //放置num個val的拷貝到隊(duì)列中
deque( const deque &from );// 從from創(chuàng)建一個內(nèi)容一樣的雙向隊(duì)列
deque( input_iterator start, input_iterator end );
// start 和 end - 創(chuàng)建一個隊(duì)列,保存從start到end的元素。
2.Operators 比較和賦值雙向隊(duì)列
//可以使用[]操作符訪問雙向隊(duì)列中單個的元素
3.assign() 設(shè)置雙向隊(duì)列的值
語法:
void assign( input_iterator start, input_iterator end);
//start和end指示的范圍為雙向隊(duì)列賦值
void assign( Size num, const TYPE &val );//設(shè)置成num個val。
4.at() 返回指定的元素
語法:
reference at( size_type pos ); 返回一個引用,指向雙向隊(duì)列中位置pos上的元素
5.back() 返回最后一個元素
語法:
reference back();//返回一個引用,指向雙向隊(duì)列中最后一個元素
6.begin() 返回指向第一個元素的迭代器
語法:
iterator begin();//返回一個迭代器,指向雙向隊(duì)列的第一個元素
7.clear() 刪除所有元素
8.empty() 返回真如果雙向隊(duì)列為空
9.end() 返回指向尾部的迭代器
10.erase() 刪除一個元素
語法:
iterator erase( iterator pos ); //刪除pos位置上的元素
iterator erase( iterator start, iterator end ); //刪除start和end之間的所有元素
//返回指向被刪除元素的后一個元素
11.front() 返回第一個元素的引用
12.get_allocator() 返回雙向隊(duì)列的配置器
13.insert() 插入一個元素到雙向隊(duì)列中
語法:
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范圍內(nèi)的元素到pos前面
14.max_size() 返回雙向隊(duì)列能容納的最大元素個數(shù)
15.pop_back() 刪除尾部的元素
16.pop_front() 刪除頭部的元素
17.push_back() 在尾部加入一個元素
18.push_front() 在頭部加入一個元素
19.rbegin() 返回指向尾部的逆向迭代器
20.rend() 返回指向頭部的逆向迭代器
21.resize() 改變雙向隊(duì)列的大小
22.size() 返回雙向隊(duì)列中元素的個數(shù)
23.swap() 和另一個雙向隊(duì)列交換元素
語法:
void swap( deque &target );// 交換target和現(xiàn)雙向隊(duì)列中元素
posted on 2012-06-04 15:57
王海光 閱讀(22807)
評論(1) 編輯 收藏 引用 所屬分類:
STL