アルゴリズムC ++スタック、キュー、ベクター
1、スタック(スタック)
#include<stack>
empty() 堆栈为空则返回真
pop() 移除栈顶元素
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素
- 質問の例
2つのスタックを使用して、キューの機能を実装します。
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack1.empty())
{
return -1;
}
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
int res = stack2.top();
stack2.pop();
while(!stack2.empty()){
stack1.push(stack2.top());
stack2.pop();
}
return res;
}
private:
stack<int> stack1;
stack<int> stack2;
};
2、キュー(キュー)
#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;
while(!q.empty()){
ele=q.front();
cout<<ele<<" ";
q.pop();
}
cout<<endl;
if(q.empty()){
cout<<"队列是空的"<<endl;
}
return 0;
}
3.ベクトル(動的配列)
#include<vector>
clear() 移除容器中所有数据。
empty() 判断容器是否为空。
erase(pos) 删除pos位置的数据
erase(beg,end) 删除[beg,end)区间的数据
front() 传回第一个数据。
insert(pos,elem) 在pos位置插入一个elem拷贝
pop_back() 删除最后一个数据。
push_back(elem) 在尾部加入一个数据。
resize(num) 重新设置该容器的大小
size() 回容器中实际数据的个数。
begin() 返回指向容器第一个元素的迭代器
end() 返回指向容器最后一个元素的迭代器
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
for(int i=0;i<10;i++){
v.push_back(i);
}
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;
}