C++ STL基本容器的使用

來源:互聯網
上載者:User

標籤:容器   alt   none   檔案   end   return   就是   it!   初始化   

1、關聯容器和順序容器

  C++中有兩種類型的容器:順序容器和關聯容器,順序容器主要有:vector、list、deque等。關聯容器主要有map和set。如:

 

1、vector基本使用

 

#include <iostream>#include <stdlib.h>#include <string.h>#include <algorithm>#include <vector>using namespace std;//利用模版進行輸出template <typename T>void print(vector<T> a){    //輸出方法1    for(auto i:a)    {        cout<<i<<‘\t‘;    }    cout<<endl;    //輸出方法2    typename vector<T>::iterator it;//前面要加typename,要不會出錯    for(it=a.begin();it!=a.end();it++)    {        cout<<*it<<‘\t‘;    }    cout<<endl;    //輸出方法3,這裡只是想說這樣也可以輸出    cout<<a[0]<<‘\t‘<<a[1]<<‘\t‘<<a[2]<<‘\t‘<<a[3]<<‘\t‘<<a[4]<<endl;    cout<<"********************"<<endl;}int main(){    /*vector初始化對象*/    vector<int> v1;//v1是一個空的vector,潛在的元素是int類型,執行時,預設初始化    v1={1,2,3,4,5};    print(v1);    vector<int> v2(v1);//相當於vector<int> v2=v1    print(v2);    vector<char> v3(5,‘a‘);//v3中含有5個a字元    print(v3);    vector<string> v4{"aa","ss","dd","ff","gg"};//v4賦值    print(v4);    vector<float> v5(5);//出事化v5,為5個0.0    v5[0]=1.1;//    v5[6]=8.8; vector可以利用下標訪問,但是不能使用下標添加元素    print(v5);/*-------------------------------------------------------------------------------*/    /*vector操作*/    vector<string> v6;    if(v6.empty())//vector是否為空白    {        cout<<"------"<<"v6 is empty"<<"-------"<<endl;    }    string s="qwe";    for(int i=0;i<5;i++)    {        v6.push_back(s);//末尾添加一個元素    }    v6.pop_back();//末尾刪除一個    v6.push_back("1234");    print(v6);    cout<<"------"<<"v6的長度為:"<<v6.size()<<"------"<<endl;    v6=v4;//拷貝v4中的元素賦值到v6中    if(v6==v4)    {        cout<<"------"<<"v6==v4"<<"------"<<endl;    }/*-------------------------------------------------------------------------------*/    /*vector常用操作*/    vector<int> array={1,6,2,6,3,6,4,6,5,6};    array.erase(remove(array.begin(),array.end(),6),array.end());//需添加標頭檔algorithm    /*remove函數使用:     *remove(始地址,終地址,需要移除的元素),返回是被替換的數第一個數的地址,比如本題vector     *原始數組為:[1,6,2,6,3,6,4,6,5,6],使用remove函數後為[1,2,3,4,5,6,4,6,5,6],     *返回的地址為位置5上(0開始)的6的地址,如下輸出數字5.    cout<<*(remove(array.begin(),array.end(),6)-1)<<endl;*/    /*刪除6的另一種方法    vector<int>::iterator it1;    it1=array.begin();    for(it1=array.begin();it1!=array.end();it1++)    {        if(6==*it1)        {            array.erase(it1);//刪除掉it1時,it1會指向下一個數,也就是6,然後再自加會指向下一個6,也就是鄰接的6是刪除不掉的            it1--;//加上這一句就不會出錯        }    }*/    print(array);    vector< vector<int> > intVV;//vector實現二維數組    vector<int> intV;    int i,j;    for(i=0;i<3;++i){        intV.clear();        for(j=0;j<5;++j)            intV.push_back(i*10+j);        intVV.push_back(intV);    }    for(i=0;i<3;++i){        for(j=0;j<5;++j)            cout<<intVV[i][j]<<‘\t‘;        cout<<endl;    }    return 0;}
View Code

 

C++ STL基本容器的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.