c++中stack、queue和vector的基本操作示例
前言
这几天在接触搜索的题目,用bfs时基本都用到队列,就顺便学习了数据结构的栈、队列。本文将详细给大家介绍关于c++中stack、queue和vector的基本操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
stack 的基本操作有:
入栈,如例:s.push(x);
出栈,如例:s.pop();
注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,如例:s.top()
判断栈空,如例:s.empty()
,当栈空时,返回true。
访问栈中的元素个数,如例:s.size()
。
queue 的基本操作有:
入队,如例:q.push(x);
将x 接到队列的末端。
出队,如例:q.pop();
弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front()
, 即最早被压入队列的元素。
访问队尾元素,如例:q.back()
,即最后被压入队列的元素。
判断队列空,如例:q.empty()
,当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
vector的基本操作有:
尾部插入数字:vec.push_back(a);
使用下标访问元素,cout<<vec[0]<<endl;
记住下标是从0开始的。
使用迭代器访问元素.
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
插入元素: vec.insert(vec.begin()+i,a);
在第i+1个元素前面插入a;
删除元素: vec.erase(vec.begin()+2);
删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);
删除区间[i,j-1];区间从0开始
向量大小:vec.size();
清空:vec.clear();
注意:
使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());
将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
使用sort排序:需要头文件#include<algorithm>
,
sort(vec.begin(),vec.end());
(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b) { return a>b; }
调用时:sort(vec.begin(),vec.end(),Comp)
,这样就降序排序。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
C++ vector删除符合条件的元素示例分享
C++ vector中实际删除元素使用的是容器vecrot std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换. 1.std::vector::erase() 函数原型:iterator erase (iterator position);//删除指定元素 iterator erase (iterator first, iterator last);//删除指定范围内的元素 返回值:指向删除元素(或范围
-
C++中vector的用法实例解析
本文实例展示了C++中的vector用法,分享给大家供大家参考.具体如下: 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小. 例如: // c语言风格 int myHouse[100] ; // 采用vector vector<int> vecMyHouse(100); 当如上定义后,vecMyHouse
-
C++ 中"priority_queue" 优先级队列实例详解
C++ 中"priority_queue" 优先级队列实例详解 1. 简介 标准库队列使用了先进先出(FIFO)的存储和检索策略. 进入队列的对象被放置在尾部, 下一个被取出的元素则取自队列的首部. 标准库提供了两种风格的队列: FIFO 队列(FIFO queue, 简称 queue), 以及优先级队列(priority queue). priority_queue 允许用户为队列中存储的元素设置优先级. 这种队列不是直接将新元素放置在队列尾部, 而是放在比它优先级低的元素前面. 标
-
C++中vector容器的常用操作方法实例总结
1 获得容器最后一个元素 ------ 使用 back或rbegin 取得 // back.rbegin 有常量和引用两种形式 std::vector<int> myVector; myVector.back()=3; std::vector<int>::reverse_iterator tailIter; tailIter=myVector.rbegin(); *tailIter=3 2 删除某元素 需要删除某位置的元素,应使用iterator遍历, 不应使用at(i) 方式遍
-
C++栈(stack)的模板类实现代码
本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下 1.基本概念 栈中的元素遵守"先进后出"的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一 栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小 2.构造栈 可以使用数组构造栈,也可以使用单向链表构造,我觉得使用单向链表更加灵活方便,下
-
C++ STL容器stack和queue详解
stack是一个比较简单的容器,它的使用也很简单,stack是LIFO容器,就是后进先出,最后添加进去的元素,第一个取出来 stack初始化 std::stack<int> first; std::stack<int> second(first); std::stack<int, std;:vector<int>> third; //使用vector初始化stack ### stack常用方法### empty();//判断是否为空 push(Elem e)
-
C++ vector的用法小结
c++ vector用法 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板. 标准库vector类型使用需要的头文件:#include <vector>.vector 是一个类模板.不是一种数据类型,vector<int>是一种数据类型.Vector的存储空间是连续的,list不是连续存储的. 一. 定义和初始化 vector< typeName > v1
-
C++中stack、queue、vector的用法详解
一.栈(stack) 引入头文件 #include<stack> 常用的方法 empty() 堆栈为空则返回真 pop() 移除栈顶元素 push() 在栈顶增加元素 size() 返回栈中元素数目 top() 返回栈顶元素 3.实例代码 #include<iostream> #include<stack> using namespace std; int main(){ //创建栈 s stack<int> s; //将元素压入栈 for(int i=0;
-
c++中stack、queue和vector的基本操作示例
前言 这几天在接触搜索的题目,用bfs时基本都用到队列,就顺便学习了数据结构的栈.队列.本文将详细给大家介绍关于c++中stack.queue和vector的基本操作,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. stack 的基本操作有: 入栈,如例:s.push(x); 出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素. 访问栈顶,如例:s.top() 判断栈空,如例:s.empty() ,当栈空时,返回true. 访问栈中的元素个数,如例:s.
-
Kotlin中Stack与LinkedList的实现方法示例
前言 本文主要介绍的是关于Kotlin 实现基本的数据结构 Stack 和 LinkedList,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Stack Java中Stack由List实现,Kotlin中有MutableList,Stack类的基本定义如下,继承Iterator为了迭代遍历: class Stack<T : Comparable<T>>(list : MutableList<T>) : Iterator<T> 基本属性实
-
PHP中模拟链表和链表的基本操作示例
模拟链表: <?php /** * PHP实现链表的基本操作 */ class linkList { /** * 姓名 * @var string */ public $name = ''; /** * 编号 * @var int */ public $id = 0; /* * 引用下一个对象 */ public $next = null; /** * 构造函数初始化数据 * @param int $id * @param string $name */ public function __co
-
C++ 中Vector常用基本操作
标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,下面通过本文给大家介绍,具体内容如下所示: (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的. (5)使用迭代器访问元素. vect
-
C++中队列queue的用法实例详解
目录 一.定义 一.queue初始化 二.queue常用函数 补充:queue 的基本操作举例如下 总结 一.定义 queue是一种容器转换器模板,调用#include< queue>即可使用队列类. 一.queue初始化 queue<Type, Container> (<数据类型,容器类型>) 初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型 初始化示例 1: queue<int>q1; queue<double>q2; q
-
Golang中数据结构Queue的实现方法详解
前言 本文主要给大家介绍了关于Golang中数据结构Queue实现的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 需求 队列的特性较为单一,基本操作即初始化.获取大小.添加元素.移除元素等.最重要的特性就是满足先进先出. 实现 接下来还是按照以前的套路,一步一步来分析如何利用Go的语法特性实现Queue这种数据结构. 定义 首先定义每个节点Node结构体,照例Value的值类型可以是任意类型,节点的前后指针域指针类型为node type node struct {
-
Java中的vector类使用示例小结
基本操作示例 VectorApp.java import java.util.Vector; import java.lang.*; import java.util.Enumeration; public class VectorApp { public static void main(String args[]) { Vector v1 = new Vector(); Integer integer1= new Integer(1); //加入为字符串对象 v1.addElement("o
-
java中stack(栈)的使用代码实例
java中stack类继承于vector,其特性为后进先出(lastinfirstout). 入栈和出栈实例图: 实例图的java代码实例: package com.lanhuigu.java.ListTest; import java.util.Stack; public class StackTest { public static void main(String[] args) { Stack<String> staffs = new Stack<String>(); //
-
浅谈Java中的Queue家族
Queue接口 先看下Queue的继承关系和其中定义的方法: Queue继承自Collection,Collection继承自Iterable. Queue有三类主要的方法,我们用个表格来看一下他们的区别: 方法类型 方法名称 方法名称 区别 Insert add offer 两个方法都表示向Queue中添加某个元素,不同之处在于添加失败的情况,add只会返回true,如果添加失败,会抛出异常.offer在添加失败的时候会返回false.所以对那些有固定长度的Queue,优先使用offer方法.
随机推荐
- Android 动画之TranslateAnimation应用详解
- 我的文档和QQ聊天记录备份与恢复技巧
- Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
- artDialog+plupload实现多文件上传
- 基于Jquery和html5实现炫酷的3D焦点图动画
- 基于AngularJS的拖拽文件上传的实例代码
- Java servlet、filter、listener、interceptor之间的区别和联系
- php后台程序与Javascript的两种交互方式
- C# 遍历枚举类型的所有元素
- MYSQL IN 与 EXISTS 的优化示例介绍
- javascript格式化指定日期对象的方法
- Jquery Mobile 自定义按钮图标
- C++带有指针成员的类处理方式详解
- CentOS7下安装Nginx+MySQL教程
- Nginx平滑升级的详细操作方法
- 如何解决win10与Ubuntu16.04时间不同步的问题的方法
- HTML中使用python屏蔽一些基本功能的方法
- Android开发应用第一步 安装及配置模拟器Genymotion
- javascript实现数字配对游戏的实例讲解
- 将易语言源码编译成软件的实操步骤