您的位置:首页 > 编程语言 > C语言/C++

C++ STL典型容器queue,vector,stack的使用方法

2019-06-16 23:49 295 查看

知识点小结:

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

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

[code]#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比较直观。

[code]  //当希望放入的元素是先进先出时,选用队列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容器的操作也比前两种容器的操作要多一些。

[code]//当希望可以顺序遍历或者索引的时候,选用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;

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: