STL中deque

news/2024/11/29 10:49:13/

以下学习一下STL中另一种序列容器——deque。

deque表示double-ended queue,即双向队列,deque是通过作为动态数组的方式实现的,这样可以在两端插入元素。因此,deque可以在任何一个方向进行扩展。同时可以在中间插入元素。在开头或结尾处插入元素非常的快,然而在中间插入元素将会比较耗时间,因此需要移动队列中的元素。


定义deque容器的类名为deque。类deque的定义以及deque对象的各种操作函数的实现包含在头文件<deque>中,因此,在程序中使用deque时,程序中必须包含如下语句:

 

#include <deque>


类deque中包含好几个构造器,因此,当声明一个deque对象时,可以通过各种方式进行初始化。如下表中提供的方式:

 


除了之前介绍的所有序列容器通用的操作意外,下表还描述了用来管理deque容器的元素的操作。各个语句展示了如何使用某一个特定的函数,其中假设deq是一个deque容器


下例展示了如何在程序中使用deque。

 

#include <iostream>
#include <deque>
#include <algorithm>
#include <iterator>using namespace std;int main()
{deque<int> intDeq;ostream_iterator<int> screen(cout, " ");intDeq.push_back(13);intDeq.push_back(75);intDeq.push_back(28);intDeq.push_back(35);cout << "intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;intDeq.push_front(0);intDeq.push_back(100);cout << "After adding two more "<< "elements, one at the front " << endl<< "	and one at the back, intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;intDeq.pop_front();intDeq.pop_front();cout << "After removing the first "<< "two elements, " << endl<< "	intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;intDeq.pop_back();intDeq.pop_back();cout << "After removing the last "<< "two elements, " << endl<< "	intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;deque<int>::iterator deqIt;deqIt = intDeq.begin();++deqIt;intDeq.insert(deqIt, 666);cout << "After inserting 666, "<< "intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;intDeq.assign(2, 45);cout << "After assigning two "<< "copies of 45, intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;intDeq.push_front(-10);intDeq.push_front(-999);cout << "After inserting two "<< "elements, one at the front " << endl<< "	and one at the back, intDeq: ";copy(intDeq.begin(), intDeq.end(), screen);cout << endl;return 0;
}

 

输出为:

 



 

转载于:https://www.cnblogs.com/riasky/p/3430770.html


http://www.ppmy.cn/news/609380.html

相关文章

大数据Spark(十八):Spark Core的RDD Checkpoint

文章目录 RDD Checkpoint 引入 API 代码演示 总结:持久化和Checkpoint的区别 问题:

推理部署概述

推理部署概述 人工智能算法的重要能力&#xff0c;是可对未知的新数据做出预测&#xff0c;而所依据的则是在已知数据上训练出的模型。因为这个过程与人面对问题时依据经验思考推导后得出结论相类似&#xff0c;所以在人工智能领域又被称为推理&#xff08;Inference&#xff0…

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

问题描述:Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 问题指向这一行 String companylng (String) homeObj.get("lng");这个问题就是强转出现的问题, 处理方法使用 String.valueOf String companylng St…

Java字符串中字符的Unicode码点、编码

以前对于Java字符串中字符的Unicode码点、UTF编码没有仔细研究。今天研究了下。 Unicode是一个字符集&#xff0c;其实是一个映射&#xff0c;给每个字符映射了一个数值&#xff0c;称为码点&#xff08;Code Point&#xff09;。 而UTF-8、UTF-16、UTF-32则是对Unicode码点的转…

一周总结(3)

本周主要学习了大道至简中的内容&#xff0c;学到很多新知识 基本是下午学一会&#xff0c;时间不长但还行 下周还是要看大道至简&#xff0c;继续学习 转载于:https://www.cnblogs.com/ICDTAD/p/11254339.html

JSONObject 和 JSONArray 获取value 的方法

JSONObject 和 JSONArray 获取value 值 主要是根据key 值来获取的,使用方法是get() 或者getJSONObject 方法很简单 下面列举几个例子,大家可以参考下代码 public class MainActivity extends AppCompatActivity {String data1 "{\"age\":\"23\",\&…

源码编译优化

源码编译优化 深度学习的发展十分迅速&#xff0c;对科研或工程人员来说&#xff0c;可能会遇到一些需要自己开发op的场景&#xff0c;可以在python层面编写op&#xff0c;但如果对性能有严格要求的话&#xff0c;必须在C层面开发op&#xff0c;对于这种情况&#xff0c;需要用…