標籤:容器 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基本容器的使用