STL顺序容器之deque双端队列
2013-04-09 14:46
561 查看
deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。
deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()vector不支持的操作。
deque的一些性质:
1:与vector容器一样,在deque容器的中间insert或erase元素效率比较低。
2:不同于vector容器,deque容器提供高效地在其首部实现insert或erase操作,就像在容器尾一样。
3:与vector容器一样而不同于list容器的是,deque容器支持对所有元素的随机访问。
4:在deque容器首部或尾部插入元素不会使任何迭代器失效,而在首部或尾部删除元素则只会使指向该元素的迭代器失效。在deque容器的任何其他位置的插入与删除操作将使指向该容器元素的所有迭代器失效。
使用示例1:
运行结果:
pop_front():
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
pop_back():
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
其他诸如swap,assign等操作同vector一致,使用示例可以直接参见
deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()vector不支持的操作。
deque的一些性质:
1:与vector容器一样,在deque容器的中间insert或erase元素效率比较低。
2:不同于vector容器,deque容器提供高效地在其首部实现insert或erase操作,就像在容器尾一样。
3:与vector容器一样而不同于list容器的是,deque容器支持对所有元素的随机访问。
4:在deque容器首部或尾部插入元素不会使任何迭代器失效,而在首部或尾部删除元素则只会使指向该元素的迭代器失效。在deque容器的任何其他位置的插入与删除操作将使指向该容器元素的所有迭代器失效。
使用示例1:
#include <iostream> #include <deque> using namespace std; template <typename T> class Print{ public: void operator() (T& t){ cout << t << " "; } }; int main(){ deque<int> d; Print<int> print; for(int i = 0; i < 5; ++i) d.push_back(i + 1); //push_front() only apply to list and deque d.push_front(0); //pop_front() only applyy to list and deque cout << "pop_front():" << endl; while(! d.empty()){ for_each(d.begin(),d.end(),print); cout << endl; d.pop_front(); } //pop_back() for(int i = 0; i < 5; ++i) d.push_back(i + 1); cout << "pop_back():" << endl; while(! d.empty()){ for_each(d.begin(),d.end(),print); cout << endl; d.pop_back(); } }
运行结果:
pop_front():
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
pop_back():
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
其他诸如swap,assign等操作同vector一致,使用示例可以直接参见
相关文章推荐
- 【STL】容器 > 顺序容器 > deque(双端队列)
- STL顺序容器之双端队列deque
- STL顺序容器之deque双端队列
- STL顺序容器之deque双端队列
- STL容器--顺序容器-队列queue和deque
- 【双端队列】【栈】【队列】STL之deque、stack、queue、容器适配器
- STL顺利容器之双端队列(deque)
- stl之deque双端队列容器
- STL(七)deque双端队列容器
- C++ STL 容器技术 之 deque双端队列容器
- 【C++】STL常用容器总结之五:双端队列deque
- stl之deque双端队列容器
- STL系列之deque双端队列+vector向量容器
- STL 顺序容器之双端队列
- C++ STL 容器技术 之 deque双端队列容器
- STL序列式容器之双端队列——deque
- STL顺序容器-deque(双向队列)
- C++ STL学习笔记三 deque双端队列容器
- C++ STL学习笔记三 deque双端队列容器
- stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解