アルゴリズムC ++スタック、キュー、ベクター

アルゴリズム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(){
    
    
	//声明V 
	vector<int> v;
	//向向量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;
}

おすすめ

転載: blog.csdn.net/qq_45125250/article/details/109748513