在算法中栈和队列的使用的频繁的,在学习算法的过程中栈、队列、set、vector的使用方法我们一定要掌握。
在C++中栈和队列、set、vector已经被封装好了,我们可以直接通过以下步骤调用栈和队列:
1.相关头文件
包含栈头文件:#include< stack >
包含队列头文件:#include< queue >
包含set头文件:#include< set >
包含vector头文件:#include< vector >
2.相关定义方式
定义 栈:stack< 类型 > stk;
定义 队列: queue< 类型 > q;
定义 set:set<类型>t;
定义 vector:vertor < 类型 > v;
(ps:类型为int、char等)
3.相关操作
栈提供了如下的操作:
(1)stk.empty() :如果栈为空返回true,否则返回false。
(2)stk.size():返回栈中元素的个数。
(3)stk.pop():删除栈顶元素,但不返回其值。
(4)stk.top():返回栈顶元素,但不删除该元素。
(5)stk.push():在栈顶压入新元素。
//栈代码
#include<bits/stdc++.h>
#include<stack>
using namespace std;
int main()
{
stack<int>stk;
cout << "栈的相关操作" << endl;
cout << "栈是否为空:" << stk.empty() << endl;
stk.push(100);
stk.push(50);
cout << "将先压入栈100、后压入栈50后栈顶元素:" <<
stk.top() << endl;
cout << "栈的大小为:" << stk.size() << endl;
stk.pop();
cout << "弹栈一次后,栈顶元素为:" << stk.top() << endl;
cout << "栈的大小为:" << stk.size() << endl;
return 0;
}
队列提供了如下操作:
(1)q.empty():如果队列为空返回true,否则返回false。
(2)q.size():返回队列中的元素个数。
(3)q.pop():删除队列首元素但不返回其值。
(4)q.front():返回队首元素的值,但不删除该元素。
(5)q.push():在队尾压入新元素。
(6)q.back():返回队列尾元素的值,但不删除该元素。
//队列代码
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int main()
{
queue<int>q;
cout << "队列的相关操作" << endl;
cout << "队列是否为空:" << q.empty() << endl;
q.push(100);
q.push(50);
cout << "将先将100入队、后将50入队后队首元素:" <<
q.front() << " 队尾元素:" << q.back() << endl;
cout << "队列的大小:" << q.size() << endl;
q.pop();
cout << "出队一次后,队首元素:" << q.front() <<
" 队尾元素:" << q.back() << endl;
cout << "队列的大小:" << q.size() << endl;
return 0;
}
set提供了如下操作:
(1)t.begin() 返回指向第一个元素的迭代器。
(2)t.clear() 清除所有元素。
(3)t.count() 返回某个值元素的个数。
(4)t.empty() 如果集合为空,返回true(真)。
(5)t.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素。
(6)t.erase() 删除集合中的元素。
(7)t.find() 返回一个指向被查找到元素的迭代器。
(8)t.insert() 在集合中插入元素。
(9)t.max_size() 返回集合能容纳的元素的最大限值。
(10)t.size() 集合中元素的数目。
(11)t.swap() 交换两个集合变量。
set放入一个元素就会调整这个元素的位置,把它放到合适的位置,所以set中只有一个insert插入操作,而且set不能保存相同的元素。
参考资料:博客园——C++中栈和队列的使用方法
(https://www.cnblogs.com/qujunhui/p/10360628.html)
vector提供了如下操作:
(1)v.push_back(a):尾部插入元素。
(2)cout<<v[0]<<endl:使用下标访问元素。
(3)v.insert(v.begin()+i,a):中间插入元素。
(4)v.erase(v.begin()+2):删除元素。
(5)v.erase(v.begin()+i,v.end()+j):删除区间[i,j-1];区间从0开始。
(6)v.size():v中元素个数。
(7)v.clear():清空v。
(8)v.resize(n):重新设置vector中元素个数为 n ,多余部分直接销毁,空缺部分直接设置为默认值。
(9)v.resize(n, val):重新设置vector中元素个数为 n ,空缺部分直接设置为 val。
vector参考
如果觉得该文章对你有用的话,留给赞呗!
感谢关注~