C++vector,stack,queue,deque, list基本使用

Stella981
• 阅读 663

vector

初始化

   (1)vector a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
   (2)vector a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
   (3)vector a(b); //用b向量来创建a向量,整体复制性赋值
   (4)vector a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
   (5)int b[7]={1,2,3,4,5,9,8};
            vector a(b,b+7); //从数组中获得初值

常用方法

    (1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a
    (2)a.assign(4,2); //是a只含4个元素,且每个元素为2
    (3)a.back(); //返回a的最后一个元素
    (4)a.front(); //返回a的第一个元素
    (5)a[i]; //返回a的第i个元素,当且仅当a[i]存在2013-12-07
    (6)a.clear(); //清空a中的元素
    (7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false
    (8)a.pop_back(); //删除a向量的最后一个元素
    (9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+         3(不包括它)
    (10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
    (11)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
    (12)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
    (13)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8         ,插入元素后为1,4,5,9,2,3,4,5,9,8
    (14)a.size(); //返回a中元素的个数;
    (15)a.capacity(); //返回a在内存中总共可以容纳的元素个数
    (16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
    (17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
    (18)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才         显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能)
    (19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
    (20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

stack

抬头:

#include  

stack s;

操作:

有返回值:

s.top();  //返回栈顶元素

s.empty();  //返回bool判定是否为空

_无返回值_:

s.pop(); //删除栈顶元素,并返回该删除值

s.push( T );  

s.size() 返回栈中元素数目

queue

queue 模板类的定义在头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类
型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue q1;
queue q2;

queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()

deque

需要包括头文件;

    定义:

         deque<数据类型> 变量名;

    Eg:

        deque que;//定义了一个整型的双端队列;

   基本操作(红色标识为常用操作):

       que.assign(beg,end) 将[beg; end)区间中的数据赋值给que。

       que.assign(n,elem) 将n个elem的拷贝赋值给que。

       que. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。

       que.back() 返回容器que的最后一个元素的引用。如果que为空,则该操作未定义。

       que.begin() 传回迭代器中的第一个数据地址。

       que.clear() 移除容器中所有数据。

       que.empty() 判断容器是否为空。

       que.end() 返回一个迭代器,它指向容器que的最后一个元素的下一位置。

       que.erase(pos) 删除pos位置的数据,传回下一个数据的位置。

       que.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。

       que.front() 返回容器que的第一个元素的引用。如果que为空,则该操作为空。

       que.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置

       que.insert(pos,n,elem) 在pos(迭代器)位置插入>n个elem数据。无返回值

       que.insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值

       que.max_size() 返回容器que可容纳的最多元素个数。

       que.pop_back() 删除最后一个数据。

       que.pop_front() 删除头部数据。

       que.push_back(elem) 在尾部加入一个数据。

       que.push_front(elem) 在头部插入一个数据。

       que.rbegin() 返回一个逆序迭代器,它指向容器que的最后一个元素。

       que.rend() 返回一个逆序迭代器,它指向容器que的第一个元素的前一个位置。

       que.resize(num) 重新指定队列的长度。

       que.size() 返回容器中实际数据的个数。

       que.swap(que2) 交换容器que和que2中的所有元素。

       swap(que1,que2) 交换容器que1和que2中的所有元素。

list

listlst1;          //创建空list

list lst2(5);       //创建含有5个元素的list

listlst3(3,2);  //创建含有3个元素的list

listlst4(lst2);    //使用lst2初始化lst4

listlst5(lst2.begin(),lst2.end());  //同lst4

Lst1.assign() 给list赋值
Lst1.back() 返回最后一个元素
Lst1.begin() 返回指向第一个元素的迭代器
Lst1.clear() 删除所有元素
Lst1.empty() 如果list是空的则返回true
Lst1.end() 返回末尾的迭代器
Lst1.erase() 删除一个元素
Lst1.front() 返回第一个元素
Lst1.get_allocator() 返回list的配置器
Lst1.insert() 插入一个元素到list中
Lst1.max_size() 返回list能容纳的最大元素数量
Lst1.merge() 合并两个list
Lst1.pop_back() 删除最后一个元素
Lst1.pop_front() 删除第一个元素
Lst1.push_back() 在list的末尾添加一个元素
Lst1.push_front() 在list的头部添加一个元素
Lst1.rbegin() 返回指向第一个元素的逆向迭代器
Lst1.remove() 从list删除元素
Lst1.remove_if() 按指定条件删除元素
Lst1.rend() 指向list末尾的逆向迭代器
Lst1.resize() 改变list的大小
Lst1.reverse() 把list的元素倒转
Lst1.size() 返回list中的元素个数
Lst1.sort() 给list排序
Lst1.splice() 合并两个list
Lst1.swap() 交换两个list
Lst1.unique() 删除list中重复的元素

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
STL不同容器的使用方法
以下内容摘自:http://blog.csdn.net/u014465639/article/details/70241850 1、vector(需要导入头文件include<vector)    ①定义与初始化       如果没有指定元素的初始化
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
3年前
Eigen库
MatrixXd表示任意size的矩阵,元素类型为double;VectorXd表示任意size的向量,元素类型为double.//创建31的向量v,并赋值为1,2,3VectorXdv(3);v<<1,2,3;使用固定尺寸的Matrix,Vector相比于可变尺寸的Matrix,Vector,例如Matri
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
C++ STL Vector
前言vector,是C中的向量,也可以把他理解成为一个可变数组。熟练的应用好vector,可以提高算法设计的速度。在使用vector前,请先添加头文件。include<vectorvector的初始化vector<inta(10);//创建一个含是个元素的向量,元素值未知
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
分布式系统的主键生成方案对比 | 京东云技术团队
UUID​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。