C++(STL):16---deque之常规用法

deque 是 double-ended queue 的缩写,又称双端队列容器。

前面章节中,我们已经系统学习了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之处,比如:

  • deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。

  • deque 容器也可以根据需要修改自身的容量和大小。


和 vector 不同的是,deque 还擅长在序列头部添加或删除元素,所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是,deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。

当需要向序列两端频繁的添加或删除元素时,应首选 deque 容器。

deque 容器以模板类 deque<T>(T 为存储元素的类型)的形式在 <deque> 头文件中,并位于 std 命名空间中。因此,在使用该容器之前,代码中需要包含下面两行代码:

#include <deque>
using namespace std;

注意,std 命名空间也可以在使用 deque 容器时额外注明,两种方式都可以。

创建deque容器的几种方式

创建 deque 容器,根据不同的实际场景,可选择使用如下几种方式。

1) 创建一个没

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++(STL):22 ---序列式容器queue使用

queue是队列,特点是先进先出,后进后出,你可以理解为数据结构里的队列模型,他只允许你访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。许多程序都使用了 queue 容器。queue 容器可以用来表示超市的结账队列或服务…

C++(STL):23 ---序列式容器queue源码剖析

一、queue概述 queue是一种先进先出(First In First Out,FIFO)的数据结构。它有两个出口,形式如下图所示特点:queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素但除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其他元素。换言之q…

leetcode374. 猜数字大小

我们正在玩一个猜数字游戏。 游戏规则如下&#xff1a; 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。 每次你猜错了&#xff0c;我会告诉你这个数字是大了还是小了。 你调用一个预先定义好的接口 guess(int num)&#xff0c;它会返回 3 个可能的结果&#xff08;-1&…

C++(STL):24 ---序列式容器stack用法

1.stack的定义 要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上 "using namespace std" //定义 stack< typename > name;2. stack容器内元素的访问 由于栈(stack)本书就是一种后进先出的数据结构,在STL的stack中只能 通过top()来访问…

C++(STL):25 ---序列式容器stack源码剖析

一、stack概述 stack是一种先进后出(First In Last Out,FILO)的数据结构。它只有一个出口, 形式如下图所示特点:stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之stack不允许有遍历行为将元素推入stack的动…

php-protobuf扩展和代码生成工具使用

https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.1 下载选择 https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.zip yum install autoconf automake libtool tar -zxvf protobuf-php-3.5.1.tar.gz cd protobuf-3.…

geoip环境配置

1.下载geoip的php扩展库 wget http://pecl.php.net/get/geoip-1.1.1.tgz tar zxvf geoip-1.1.1.tgz cd geoip-1.1.1 phpize ./configure --with-php-config=/usr/bin/php-config --with-geoip make &make install 2.配置php支持geoip扩展 [root]# ll /usr/lib64/php/modul…

leetcode259. 较小的三数之和

给定一个长度为 n 的整数数组和一个目标值 target&#xff0c;寻找能够使条件 nums[i] nums[j] nums[k] < target 成立的三元组 i, j, k 个数&#xff08;0 < i < j < k < n&#xff09;。 示例&#xff1a; 输入: nums [-2,0,1,3], target 2 输出: 2 解…

Struts2和Spring和Hibernate应用实例

Struts2、Spring和Hibernate应用实例Struts作为MVC 2的Web框架&#xff0c;自推出以来不断受到开发者的追捧&#xff0c;得到广泛的应用。作为最成功的Web框架&#xff0c;Struts自然拥有众多的优点&#xff1a;MVC 2模型的使用、功能齐全的标志库&#xff08;Tag Library&…

C++(STL):31 ---关联式容器map源码剖析

map的特性 所有元素都会根据元素的键值自动被排序map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key)pair的第一个元素视为键值,第二个元素视为实值map不允许两个元素拥有相同的键值下面是stl_pair.h中pair的定义://代码摘录与stl_pair.htempla…

leetcode360. 有序转化数组

给你一个已经 排好序 的整数数组 nums 和整数 a、b、c。对于数组中的每一个数 x&#xff0c;计算函数值 f(x) ax2 bx c&#xff0c;请将函数值产生的数组返回。 要注意&#xff0c;返回的这个数组必须按照 升序排列&#xff0c;并且我们所期望的解法时间复杂度为 O(n)。 示…

C++(STL):27 ---关联式容器set源码剖析

一、set set语法使用参阅:set的特性 set所有元素都会根据元素的键值自动被排序set中的键值就是实值,实值就是键值默认情况下set不允许两个元素重复set的迭代器 不能根据set的迭代器改变set元素的值。因为其键值就是实值,实值就是键值,如果改变set元素值,会严重破坏set组织…

C++(STL):28 ---关联式容器map用法

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。 通常情况下,map 容器中存储的各个键值对都选用 string 字符…

C++(STL):26 ---关联式容器set用法

set容器都会自行根据键的大小对存储的键值对进行排序, 只不过 set 容器中各键值对的键 key 和值 value 是相等的,根据 key 排序,也就等价为根据 value 排序。 另外,使用 set 容器存储的各个元素的值必须各不相同。更重要的是,从语法上讲 set 容器并没有强制对存储元素的类…

leetcode387. 字符串中的第一个唯一字符

给定一个字符串&#xff0c;找到它的第一个不重复的字符&#xff0c;并返回它的索引。如果不存在&#xff0c;则返回 -1。 案例: s "leetcode" 返回 0. s "loveleetcode", 返回 2. 注意事项&#xff1a;您可以假定该字符串只包含小写字母。 思路&…

C++(STL):30 ---关联式容器map的operator[]和insert效率对比

通过前面的学习我们知道,map 容器模板类中提供有 operator[ ] 和 insert() 这 2 个成员方法,而值得一提的是,这 2 个方法具有相同的功能,它们既可以实现向 map 容器中添加新的键值对元素,也可以实现更新(修改)map 容器已存储键值对的值。举个例子(程序一): #include …

C++(STL):29 ---关联式容器map 迭代器

无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器。当然,map 容器也不例外。C++ STL 标准库为 map 容器配备的是双向迭代器(bidirectional iterator)。这意味着,map 容器迭代器只能进行 ++p、p++、--p、p--、*p 操作,并且迭…

C++(STL):35---multimap容器

在掌握 C++ STL map 容器的基础上,本节再讲一个和 map 相似的关联式容器,即 multimap 容器。所谓“相似”,指的是 multimap 容器具有和 map 相同的特性,即 multimap 容器也用于存储 pair<const K, T> 类型的键值对(其中 K 表示键的类型,T 表示值的类型),其中各个…

在Spring + Hibernate中使用二级缓存配置步骤

在SSH中用二级缓存大概分以下几步&#xff1a; 1、首先在hbm文件里对涉及到的对象设置缓存方式&#xff0c;或根据情况设置自己需要的 2、在ehcache的配置文件里配置一个cache&#xff0c;name为这个类名 3、在applicationContext.xml的hibernate配置里 hibernate.cache.use_q…

C++(STL):34--- multiset容器详解

前面章节中,对 set 容器做了详细的讲解。回忆一下,set 容器具有以下几个特性: 不再以键值对的方式存储数据,因为 set 容器专门用于存储键和值相等的键值对,因此该容器中真正存储的是各个键值对的值(value);set 容器在存储数据时,会根据各元素值的大小对存储的元素进行…