知识点小结:

在使用c++已有的容器时,虽然queue,vector和stack一些基本操作都是类似的,但因为其函数名称不同,比如返回首元素有的是用front,有的是用top。没有整理经常混乱,下面对这几种典型类型的基本操作函数进行一下小结。

首先是stack的操作,基本操作有压入push(),弹出pop(),返回首元素top(),返回大小size(),判断是否为空empty()。

#include <iostream>
#include <stack>
#include <queue>
#include <vector>

using namespace std;

int main()
{
  //当希望放入的元素是先进后出时,选用stack容器
  stack<int> stack1;
  //向stack中压入元素用push()
  stack1.push(1);
  stack1.push(2);
  stack1.push(3);
  //访问stack中的首元素用top(),使用时注意top只返回首元素,不弹出
  int firstNumber = stack1.top();
  cout << firstNumber <<end;
  //弹出stack中的首元素用pop(),C++中弹出操作不返回值
  stack1.pop();
  //判断stack是否为空用empty(),空返回true,不空返回false
  //经常被用来判断是否继续循环
  stack1.empty();
  //返回stack的大小
  stack1.size();
  return 0;
}

下面是queue,queue的大部分操作和stack类似,但访问首元素用front()不用top()。其实也可以理解,stack是先进后出,首元素在顶层,用top比较直观,queue是先进先出,首元素一直在最前面,用front比较直观。

  //当希望放入的元素是先进先出时,选用队列queue容器
  queue<int> queue1;
  //向queue中压入元素用push()
  queue1.push(4);
  queue1.push(5);
  queue1.push(6);
  //访问queue中的首元素用front(),这里和stack是不同的
  cout << "The first element of queue is: " << queue1.front() << endl;
  //还可以访问queue的尾元素用back()
  cout << "The last element of queue is: " << queue1.back() << endl;
  //其他的操作和stack类似
  //弹出queue中的首元素
  queue1.pop();
  //返回queue的大小
  queue1.size();
  //判断queue是否为空
  queue1.empty();

最后是vector容器,vector容器相比于前两种容器要特殊一些。可以说它是一种顺序结构的动态数组,也就是说vector容器本质上来说是可以索引的。vector容器的操作也比前两种容器的操作要多一些。

//当希望可以顺序遍历或者索引的时候,选用vector容器
  vector<int> vector1;
  //向vector的尾部加入元素用push_back(),容器大小+1
  vector1.push_back(7);
  vector1.push_back(8);
  vector1.push_back(9);
  //向vector的尾部弹出元素用pop_back(),容器大小-1
  vector1.pop_back();
  //返回vector的大小
  vector1.size();
  //判断vector是否为空
  vector1.empty();
  //返回容器第一个元素,容器大小不变
  vector1.front();
  //返回容器最后一个元素,容器大小不变
  vector1.back();
  //vector可以选择位置进行插入,用insert()
  vector1.insert(vector1.begin()+1, 15);
  //vector也可以选择位置进行删除,用erase()
  vector1.erase(vector1.begin()+2);
  //容器还有一个操作就是用迭代器进行遍历
  vector<int>:: iterator it;
  for(it = vector1.begin(); it!= vector1.end(); it++)
    cout << *it << " "<< endl;

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐