C++STL模板库序列容器之deque

目录

  • 一丶队列容器deque简介
  • 二丶使用代码演示

一丶队列容器deque简介

deque底层跟vector一样,都是数组维护.不同的是可以操作头部.

二丶使用代码演示

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <deque>
using namespace std;

int main(char *argc, char *argv[]) {

  deque<int> de; //deque是队列.底层也是数组维护.可以操作头部
  de.push_back(6);
  de.push_back(5);
  de.push_back(3); //push_back() 尾部添加数据
  de.push_front(4);//push_front()头部添加数据

  deque<int>::iterator it = de.begin();
  //排序两种方式
  sort(de.begin(), de.end(), less<int>()); //从小到大排序
  sort(de.begin(), de.end(), greater<int>());//从大到小排序
  while (it != de.end())
  {
    cout << *it << " ";
    it++;
  }

  //查找
  it = find(de.begin(), de.end(), 6);
  //插入
  de.insert(it, 10);
  //删除
  de.erase(it);//内部会自增.所以it--.
  //弹出元素
  de.pop_back();
  de.pop_front();
  de.clear();
  de.empty();//判断是否为空
  de.emplace_back();
  de.emplace_front(); //判断头尾.
  int a = de.front();
  a = de.back();     //获取头/尾数据
  cout << endl;
  cout << "--------------------------" << endl;
  getchar();
  system("pause");

}

原文地址:https://www.cnblogs.com/iBinary/p/9892487.html

时间: 2024-10-10 02:21:20

C++STL模板库序列容器之deque的相关文章

C++STL模板库关联容器之set/multiset

目录 一丶关联容器简介.set/multiset 二丶演示代码. 一丶关联容器简介.set/multiset 我们的序列容器,底层都是线性表构成的. 比如 vector list deque. 关联容器底层就是红黑树. 以set集合为例. set内部元素根据其值自动排序.每个元素的值只允许出现一次.不能重复. multiset 跟set一样.只不过值可以重复. 二丶演示代码. #include <set> using namespace std; int main(char *argc, ch

STL源码笔记(12)—序列式容器之deque(二)

STL源码笔记(12)-序列式容器之deque(二) 再谈deque数据结构 我们知道deque是通过map管理很多个互相独立连续空间,由于对deque_iterator的特殊设计,使得在使用的时候就好像连续一样.有了deque_iterator的基础(例如重载的操作符等),对于我们实现容器的一些方法就十分方便了.与vector一样,deque也维护一个start,和finish两个迭代器,start指向容器中的一个元素,finish指向最后一个元素的后一个位置(前闭后开),从微观上讲,star

STL 源码剖析读书笔记四:序列式容器之 deque、stack、queue

1. 序列式容器 deque 1.1 deque 概述 vector是单向开口的连续线性空间,用户只能在vector尾部进行插入删除操作,而 deque 是一种双向开口的连续线性空间,允许我们在头尾两端操作. deque 和 vector 的最大差异在于: deque 允许常数时间对头端元素进行插入和移除操作 deque 没有所谓容量(capacity)概念,因为它是动态地以分段连续的空间组合而成,随时可以增加一段新的空间并链接起来 deque提供的迭代器也是 RandomAccess Iter

C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构

泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将"可以比大小的所有数据类型(有比较运算符)"这一概念记为Comparable 将"具有公有的复制构造函数并可以用'='赋值的数据类型"这一概念记为Assignable 将"可以比大小.具有公有的复制构造函数并可以用'='赋值的所有数据类型"这个概念记

C++STL模板库之vector

目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. STL之Vecter 一丶STL简介 STL 是标准模板库的意思. 就是数据结构,封装成类让我们使用. 使用的时候我们要了解数据结构才可以使用这些类.因为数据结构不知道是什么结构你用类的话也用不明白. 二丶Vector用法 1.vector容器的使用 首先介绍的第一个序列容器就是 vector. 它底层是数组.可以理解为是动态数组. 我们自己也可以写

c++STL容器之deque容器

deque是双端数组. deque和vector的区别: vector对于头部的插入和删除效率低,数据量越大,效率越低: deque相对于而言,对头部的插入和删除比vector快: vector访问元素时速度比deque快,这和两者的内部实现有关: deque内部工作原理: deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放着真实数据.中控器维护的是每个缓冲区的地址,使得使用每个deque时像一块连续的内存空间. deque容器的迭代器是支持随机访问的. 一.deque构造函数 de

STL 模板库中的Stack(栈)使用

Stack 从名字中可以看得出来意思是栈, 栈的特点就是先进后出,FILO. 具体使用看下面的代码: #include <iostream> #include <stack> using namespace std; int main() { stack<int> sc; for(int i = 0; i < 10l; ++i) sc.push(i); while( !sc.empty()) { cout<<sc.top()<<"

C++ STL模板库

list vector  set map区别 本质解释: 对比: 1)vector与数组 数组声明时要指定大小.vector可变. 两者内存都是连续的. 2)vector与list vector是连续的内存,list是双向连接表,在内存中不一定连续. 当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面:list因为不用考虑内存的连续,因此新增开销比vector小. list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用ve

C++标准模板库-STL库基本算法

原文链接:http://blog.csdn.net/wangfengwf/article/details/11580989#t9 16.4  STL库基本算法 标准C++STL库中算法组件为一个很重要的组成部分,该组件提供了大多数最常见的通用算法的实现,并且这些实现是经过很多测试试验并被公认在处理上是高效的.将这些最常见的算法通用化实现,最大的优势就是开发者在应用中不需要为具体的常见算法的实现而费神,只需要包含相应的头文件直接使用即可,不仅仅提高的软件开发的效率,同时还有助于软件重用性的提高.