C++中stack、queue、vector的用法详解

所属分类: 软件编程 / C 语言 阅读数: 62
收藏 0 赞 0 分享

一、栈(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;i<10;i++){
    s.push(i);
  }
//  if(!s.empty()){
//    cout<<"栈s不是空的"<<endl;
//  }
  cout<<"栈s中元素的个数为:"<<s.size()<<endl;
  while(!s.empty()){
    cout<<" "<<s.top();//获取栈顶元素
    s.pop();//弹出栈顶元素
  }
  cout<<endl;
  if(s.empty()){
    cout<<"栈s现在为空"<<endl;
  }
  return 0;
}

运行结果

二、队列(queue)

引入头文件

#include<queue>

常用方法

  • empty() 判断队列是否为空,返回类型为bool
  • size() 返回队列中元素的个数
  • front() 返回队列队首元素
  • back() 返回队列队尾元素
  • push(ele) 将元素ele插入到队尾
  • pop 队首元素出队

实例代码

#include<iostream>
#include<queue>
using namespace std;
int main(){
  int ele,num,last;
  queue<int> q;
  for(int i=0;i<10;i++){
    q.push(i);
  }
  if(!q.empty()){
    cout<<"队列不是空的"<<endl;
  }
  num=q.size();
  cout<<"队列q的长度为:"<<num<<endl;
  last=q.back();
  cout<<"队列q最后一个元素:"<<last<<endl;
  for(int j=0;j<q.size();j++){
    ele=q.front();
    cout<<ele<<" ";
    q.pop();
  }
  cout<<endl;
  if(q.empty()){
    cout<<"队列是空的"<<endl;
  }
  return 0;
}

运行结果

三、向量(vector)

引入头文件

#include<vector>

常用方法

  • c.clear() 移除容器中所有数据。
  • c.empty() 判断容器是否为空。
  • c.erase(pos) 删除pos位置的数据
  • c.erase(beg,end) 删除[beg,end)区间的数据
  • c.front() 传回第一个数据。
  • c.insert(pos,elem) 在pos位置插入一个elem拷贝
  • c.pop_back() 删除最后一个数据。
  • c.push_back(elem) 在尾部加入一个数据。
  • c.resize(num) 重新设置该容器的大小
  • c.size() 回容器中实际数据的个数。
  • c.begin() 返回指向容器第一个元素的迭代器
  • c.end() 返回指向容器最后一个元素的迭代器

代码实例

#include<iostream>
#include<vector>
using namespace std;
int main(){
  //向向量v中添加元素
  vector<int> v;
  for(int i=0;i<10;i++){
    v.push_back(i);
  }
  //从向量v中读取数据
  for(int i=0;i<v.size();i++){
    cout<<" "<<v[i];
  }
  cout<<endl;
  //使用迭代器遍历数据 迭代器相当于指针
  cout<<"使用迭代器获取数据"<<endl;
  vector<int>::iterator iter;
  for( iter = v.begin(); iter != v.end(); iter++ )
  {
   cout<<" "<< *iter;
  }
  cout<<endl;
  //删除数据
  for(vector<int>::iterator it=v.begin();it!=v.end();){
    v.erase(it);
  }
  if(v.empty()){
    cout<<"向量v为空"<<endl;
  }
  return 0;
}

运行结果

以上所述是小编给大家介绍的C++中stack、queue、vector的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

更多精彩内容其他人还在看

利用C语言来求最大连续子序列乘积的方法

这篇文章主要介绍了利用C语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多