C++ 顺序容器(vector,list、deque,stack,queue)
顺序容器的种类有:vector,list、deque
顺序容器适配器:
stack //先进后出 栈
queue //先进先出 队列
priority_queue //也优先管理级的优先队列
1.头文件
#include <vector>
#include <list>
#include <deque> //每一种头文件对应一种顺序容器
#include <queue> //队列 优先队列的头文件
#include <stack> //栈的头文件
2.定义
vector<int>v;
list<string> l;
deque<struct Node>dq;
//容器类型<容器保存的数据类型>容器名称;
3.初始化 (以vector类型为例)
vector<T>v1; //创建一个空的容器
vector<T>v2(n,i); //创建一个vector容器 其中包括n个值为i的元素
vector<T>v3(v2); //创建一个v3 是v2的副本
vector<T>v4(n); //创建一个有初始化的元素的n个副本
vector<T>v5(v2.begin(),v2.end()-); //创建v5 值为索引的中间值
注意:在初始化时,不同类型的容器之间 不能进行值的初始化
注意容器的定义时 有一种特殊情况 看下面的代码“
vector< vector<int> >v3; //ok
vector<vector<int> >v4; //ok
vector<vector<int>>v5; //error
我们在写的时候 建议使用第一种写法 养成一个好的习惯
其实这第三种定义之所以不行 是因为它俩个>符号写在了一起 就会合成一个>>符号
4.迭代器的运算
所有迭代器都支持的运算
*iter //返回迭代器所指向的元素的引用
iter->name //获取迭代器指向元素中的name 容器中保持的是结构体 相等于(*iter).name.
iter++(--) //iter 加减
++(--)iter //和上面一样 只存在先加减和先运算的不同
iter1==(!=)iter2 //判断俩个迭代器所指 的元素是同一个
以下表图为string vector deque 类型迭代器支持的额外运算
注意:list容器只提供 上面所有迭代器都提供的运算 不能使用加减法与大小比较 (加减不同于自增自减)
C++ 顺序容器(vector,list、deque,stack,queue)的更多相关文章
- C++ 顺序容器 vector list deque 之比较
在C++标准库中定义了三种顺序容器类型:vector,list和deque.所谓顺序容器就是根据位置来存储和访问元素,元素的排列次序与元素的值无关,而是由元素添加到容器的次序决定的. vector的底 ...
- C++顺序容器vector、deque、list
1.容器元素类型 C++中大多数数据类型能够作为容器的元素类型.容器元素类型必须满足一下两个条件:支持赋值和复制操作. 所以没有元素是引用类型的容器,同一时候IO对象和auto_ptr也不能作为容器的 ...
- 第十篇:顺序容器vector,deque,list的选用规则
前言 常见的顺序容器主要有三种 - vector,deque,list.它们实现的功能相差不大,那么实际开发中该如何进行选择呢?本文将为你解答这个问题. 分析 由于这三种容器实现的数据结构原型不同(v ...
- 顺序容器vector,deque,list的选用规则
前言 常见的顺序容器主要有三种 - vector,deque,list.它们实现的功能相差不大,那么实际开发中该如何进行选择呢?本文将为你解答这个问题. 分析 由于这三种容器实现的数据结构原型不同(v ...
- 【c++进阶:c++ 顺序容器vector,string,deque,list,forward_list,array常用性质】
常用5种顺序容器性质: https://blog.csdn.net/oil_you/article/details/82821833 关于deque https://www.cnblogs.com/L ...
- STL容器 vector,list,deque 性能比较
C++的STL模板库中提供了3种容器类:vector,list,deque对于这三种容器,在觉得好用的同时,经常会让我们困惑应该选择哪一种来实现我们的逻辑.在少量数据操作的程序中随便哪一种用起来感觉差 ...
- programming review (c++): (1)vector, linked list, stack, queue, map, string, bit manipulation
编程题常用知识点的review. most important: 想好(1)详尽步骤(2)边界特例,再开始写代码. I.vector #include <iostream> //0.头文件 ...
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
序列性容器::(vector和list和deque) erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被 删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方 式, ...
- 2.1顺序容器-vector
vector 1) * :使用vector必须包含vector头文件.可变长的动态数组,支持随机访问,所有STL算法都可以对vector进行操作. ** :随机根据下标访问某个元素的时间是一个常数 ...
随机推荐
- Problem 8 dp
$des$ $sol$ 记 $f_i$ 表示考虑前 $i$ 个建筑, 并且第 $i$ 个建筑的高度不变的答案, 每次转移时枚举上一个不变的建筑编号, 中间的一段一定变成相同的高度, 并且高度小于等于两 ...
- noi.ac #43 dp计数
\(sol\) 状态 \[f_{i, dis_1, dis_2, dis_3, dis_4}\] 表示到了第 \(i\) 层,其中 \(dis_{1}\) 表示第一根柱子剩下的最靠上的横木到当前 \( ...
- (19)打鸡儿教你Vue.js
了解vue2.x的核心技术 建立前端组件化的思想 常用的vue语法 vue-router,vuex,vue-cli 使用vue-cli工具 Vue框架常用知识点 vue核心技术 集成Vue 重点看,重 ...
- Ancient Go(简单DFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5546 AC代码: #include<iostream> #include<cstdi ...
- (5)Go数组
数组 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为int的数组a var a [3] ...
- Struts2.5入门之环境设置
1. 下载Struts2.5,下载地址 2. 新建项目struts2 3. 解压后将struts\lib下的所有jar包复制到WEB-INF/lib文件夹下 4. 修改web.xml配置文件,添加如下 ...
- Atcoder Grand Contest 026 (AGC026) F - Manju Game 博弈,动态规划
原文链接www.cnblogs.com/zhouzhendong/AGC026F.html 前言 太久没有发博客了,前来水一发. 题解 不妨设先手是 A,后手是 B.定义 \(i\) 为奇数时,\(a ...
- java并发编程学习博客
http://www.blogjava.net/xylz/archive/2010/07/08/325587.html 经典
- node依赖包格式区别
UMD:UMD 版本可以通过 <script> 标签直接用在浏览器中.jsDelivr CDN 的 https://cdn.jsdelivr.net/npm/vue 默认文件就是运行时 + ...
- 使用FCKeditor编辑器上传文件时中文文件名乱码
修改:editor\filemanager\browser\default\frmupload.html 文件的编码改为UTF-8 实在不行:fckeditor/editor/filemanager/ ...