C++ Deque(双向队列
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ì)列中元素
總結(jié)
以上是生活随笔為你收集整理的C++ Deque(双向队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集合类总结
- 下一篇: Ubuntu14.04 Apollo 3