c++中stack、queue、vector的用法

weixin_33830216發表於2017-08-29

一、棧(stack)

  1. 引入標頭檔案
#include<stack>
  1. 常用的方法
  • empty() 堆疊為空則返回真

  • pop() 移除棧頂元素

  • push() 在棧頂增加元素

  • size() 返回棧中元素數目

  • top() 返回棧頂元素

3.例項程式碼

#include<iostream>
#include<stack>
using namespace std;
int main(){
    //建立棧 s
    stack<int> s;
    //將元素壓入棧
    for(int i=0;i<10;i++){
        s.push(i);
    }
//    if(!s.empty()){
//        cout<<"棧s不是空的"<<endl;
//    }
    cout<<"棧s中元素的個數為:"<<s.size()<<endl;
    while(!s.empty()){
        cout<<" "<<s.top();//獲取棧頂元素
        s.pop();//彈出棧頂元素
    }
    cout<<endl;
    if(s.empty()){
        cout<<"棧s現在為空"<<endl;
    }
    return 0;
}
  1. 執行結果


    1531909-fa9c6751ee8da6ec.png
    執行結果

二、佇列(queue)

  1. 引入標頭檔案
#include<queue>
  1. 常用方法
  • empty() 判斷佇列是否為空,返回型別為bool
  • size() 返回佇列中元素的個數
  • front() 返回佇列隊首元素
  • back() 返回佇列隊尾元素
  • push(ele) 將元素ele插入到隊尾
  • pop 隊首元素出隊
  1. 例項程式碼
#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;
    for(int j=0;j<q.size();j++){
        ele=q.front();
        cout<<ele<<" ";
        q.pop();
    }
    cout<<endl;
    if(q.empty()){
        cout<<"佇列是空的"<<endl;
    }
    return 0;
}


  1. 執行結果
1531909-b5df9d9de4f2252d.png
執行結果

三、向量(vector)

  1. 引入標頭檔案
#include<vector>
  1. 常用方法
  • c.clear() 移除容器中所有資料。
  • c.empty() 判斷容器是否為空。
  • c.erase(pos) 刪除pos位置的資料
  • c.erase(beg,end) 刪除[beg,end)區間的資料
  • c.front() 傳回第一個資料。
  • c.insert(pos,elem) 在pos位置插入一個elem拷貝
  • c.pop_back() 刪除最後一個資料。
  • c.push_back(elem) 在尾部加入一個資料。
  • c.resize(num) 重新設定該容器的大小
  • c.size() 回容器中實際資料的個數。
  • c.begin() 返回指向容器第一個元素的迭代器
  • c.end() 返回指向容器最後一個元素的迭代器
  1. 程式碼例項
#include<iostream>
#include<vector>
using namespace std;
int main(){
    //向向量v中新增元素
    vector<int> 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;
}

  1. 執行結果
1531909-5550582503cb4f37.png
執行結果

相關文章