C ++示例中的双端队列C ++ Deque程序
C ++示例中的双端队列C ++ Deque Program是今天的主题。 Deque代表双端队列。它的发音为“ deck”。它是具有动态大小的容器,并且可以在两端扩展或收缩,即,两端都可以在此双端队列中操作。向量也具有连续的存储分配,但是在双端队列的情况下,通常会动态分配内存。
内容概述
- C ++示例中的1个双端队列
- 2与双端队列相关的不同方法
- 2.1 insert()
- 2.2 rbegin()
- 2.3 rend()
- 2.4 cbegin()
- 2.5 Assign()
- 2.6 max_size()
- 2.7 resize()
- 2.8 push_front()
- 2.9 push_back()
- 2.10 pop_front()
- 2.11 pop_back()
- 2.12 clear()
- 2.13 delete()
- 2.14 front()
- 2.15 back()
- 2.16 at()
- 2.17 swap()
- 2.18 begin()
- 2.19 end()
- 2.20 emplace_front()
- 2.21 emplace_back()
- 3 C ++ Deque程序
- 4时间复杂度
- 5结论
- 6篇推荐文章
C ++示例中的双端队列
双端队列是在双端队列上实现的数据结构。它与队列相关,因为队列插入在最后完成,而删除从前面完成。双端队列是可以在两端进行插入和删除的单个队列。
std :: deque(双端队列)是一个索引序列容器,允许在其开始和结束时都进行快速插入和删除。此外,在双端队列的任一端插入和删除都不会使指向其余元素的指针或引用无效。
Deque的正面和背面均具有pop()和push()函数。
初始化双端队列:
与双端队列相关的不同方法
插入()
它用于插入元素,并返回指向新插入元素中第一个的迭代器。
rbegin()
它返回一个反向迭代器,它指向双端队列的最后一个元素。
rend()
它返回一个反向迭代器,它指向双端队列开始之前的位置。
cbegin()
它返回一个常量迭代器,该迭代器指向容器的第一个元素。
分配()
用于将值分配给相同或不同的双端队列容器。
max_size()
它返回特定双端队列可以容纳的最大元素数。
resize()
此功能更改队列的大小。
push_front()
它将元素从正面推入双端队列。
推回()
它用于从后部以双端队列推动元素。
pop_front()
它用于从队列的前面弹出元素。
pop_back()
它用于从队列的后面弹出元素。
明确()
它用于删除双端队列中的所有项目。
擦除()
用于从指定位置删除项目。
面前()
它用于引用双端队列的第一个元素。
背部()
它用于引用双端队列的最后一个元素。
在()
这用于引用在给定位置上作为该给定函数的参数存在的元素。
交易所()
它用于将一个双端队列的内容与相同类型和大小的另一个双端队列交易所。
开始()
它将迭代器返回到双端队列的第一个元素。
结束()
它将迭代器返回到双端队列的最后一个元素。
emplace_front()
它用于在队列的开头插入新元素。
emplace_back()
它用于在容器的后面插入一个新元素。
为双端队列定义了更多方法。
C ++ Deque程序
Q1-编写一个程序,从前端推送2个元素,从后端推送2个元素,并打印双端队列。
#include#include using namespace std; void showdata(deque deque1) { deque ::iterator iterator_1; for (iterator_1 = deque1.begin(); iterator_1 != deque1.end(); ++iterator_1) cout << "t" << *iterator_1; cout << "n"; } int main() { deque myqueue; myqueue.push_front(230); // getting data from front myqueue.push_front(240); // getting data from front myqueue.push_back(250); // getting data from back myqueue.push_back(260); // getting data from back cout << "Deque elements are: "; showdata(myqueue); return (0); }
请参阅以下输出。
Q2-编写程序以将5个元素放入双端队列并弹出两个元素,然后打印双端队列的大小。
#include#include using namespace std; void showdata(deque deque1) { deque ::iterator iterator_1; for (iterator_1 = deque1.begin(); iterator_1 != deque1.end(); ++iterator_1) cout << "t" << *iterator_1; cout << "n"; } int main() { deque myqueue; myqueue.push_front(230); // getting data from front myqueue.push_front(240); // getting data from front myqueue.push_back(250); // getting data from back myqueue.push_back(260); // getting data from back cout << "Deque elements before popping are: "; showdata(myqueue); myqueue.pop_back(); myqueue.pop_back(); cout << "Deque elements after popping are: "; showdata(myqueue); cout << "Final size of the deque is: " << myqueue.size() << endl; return (0); }
查看输出。
时间复杂度
双端队列的主要操作的复杂度(效率)如下:
- 随机访问:常量O(1)
- 在末尾插入或删除项目-常量O(1)
- 插入或取出物品-线性O(n)
结论
双端队列是C ++中当前可用的许多标准模板库(STL)容器之一。
他们的名字暗示了它们的预期用途以及它们可能带来的好处。
最后,在C ++中使用Deque示例| C ++ Deque程序结束。
推荐的帖子
C ++示例中的队列
带有示例的C ++列表教程
带有示例的C ++迭代器教程
带有示例的C ++数组教程
带有示例的C ++模板教程