deque和queue比较
deque:双端队列,可以在头部和尾部进行快速的添加/删除操作 http://www.cplusplus.com/reference/deque/deque/
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。
Constructors | 创建一个新双向队列 |
Operators | 比较和赋值双向队列 |
assign() | 设置双向队列的值 |
at() | 返回指定的元素 |
back() | 返回最后一个元素 |
begin() | 返回指向第一个元素的迭代器 |
clear() | 删除所有元素 |
empty() | 返回真如果双向队列为空 |
end() | 返回指向尾部的迭代器 |
erase() | 删除一个元素 |
front() | 返回第一个元素 |
get_allocator() | 返回双向队列的配置器 |
insert() | 插入一个元素到双向队列中 |
max_size() | 返回双向队列能容纳的最大元素个数 |
pop_back() | 删除尾部的元素 |
pop_front() | 删除头部的元素 |
push_back() | 在尾部加入一个元素 |
push_front() | 在头部加入一个元素 |
rbegin() | 返回指向尾部的逆向迭代器 |
rend() | 返回指向头部的逆向迭代器 |
resize() | 改变双向队列的大小 |
size() | 返回双向队列中元素的个数 |
swap() | 和另一个双向队列交换元素 |
queue:单端队列,http://www.cplusplus.com/reference/queue/queue/
C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。
back() | 返回最后一个元素 |
empty() | 如果队列空则返回真 |
front() | 返回第一个元素 |
pop() | 删除第一个元素 |
push() | 在末尾加入一个元素 |
size() | 返回队列中元素的个数 |
deque常用操作:
void example() { deque<int> deq; if (deq.empty()) { cout <<"deq is empty" << endl; } //尾部插入 deq.push_back(3); deq.push_back(5); // 头部插入 deq.push_front(1); deq.push_front(2); // 头部取值 int top = deq.front(); // 尾部取值 int last = deq.back(); for (size_t i = 0; i < deq.size(); ++i) { cout << deq[i] << " "; } cout<< endl << "top:" << top << " last:" << last << endl; deq.at(2) = 8; // 2 1 8 5 for (size_t i = 0; i < deq.size(); ++i) { cout << deq[i] << " "; } cout << endl; // 索引取值 deque<int> deq1(10); for (size_t i = 0; i < deq1.size(); ++i) { deq1[i] = i + 1; } for (size_t i = 0; i < deq1.size(); ++i) { cout << deq1[i] << " "; } }
输出:
que is empty deq is empty 2 1 3 5 top:2 last:5 2 1 8 5 1 2 3 4 5 6 7 8 9 10
queue的操作就相对少了很多: