1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<vector>//不定長數組(向量)所需要包含的頭文件 5 6 using namespace std; 7 8 const int maxn = 30; 9 10 int n; 11 12 int arr[5]={1,2,3,4,5}; 13 /*不定長數組的聲明方法*/ 14 15 vector <int> pile; 16 //vector<T> v1 vector保存類型為T的對象。默認構造函數,v1為空 17 vector <int> pile_copy; 18 //vector<T> v2(v1) v2是v1的一個副本 19 vector <int> pile2(3,5); 20 //vector<T> v3(n,i) v3包含n個值為i的元素 21 vector <int> pile3(3); 22 //vector<T> v4(n) v4含有值初始化的元素的n個副本 如果為整形(int) 則為0 若為字符串(string)類型 則為空 23 vector <int> pile4{1,2}; 24 //初始化第一個元素為1,第二個元素為2,其余按照默認值(0)初始化 25 vector <int> pile5(arr,&arr[5]); 26 //以區間(beg;end)做為初值的vector 27 /* 28 此外不定長數組不限於基本類型 還可以是結構體類型(結構體要定義為全局的,否則會出錯) 29 也可以是聲明不定長類型的二維數組 30 */ 31 vector <vector <int> > pile6;//聲明一個二維不定長數組 32 33 /* 不定長數組的使用方法*/ 34 35 pile.push_back(1); 36 //尾部插入數字 1 37 pile.pop_back(); 38 //在尾部刪除一個元素 39 cout<<pile2[1]<<endl; 40 //可以用數組方法訪問不定長數組元素 41 pile3.assign(arr,&arr[5]); 42 //吧arr[0]到arr[5]中的元素進行拷貝 43 vector<int>::iterator it; 44 //聲明一個叫it的整形的迭代器 45 for(it=pile2.begin();it < pile2.end(); it++) 46 cout<<*it<<endl; 47 //利用迭代器對不定長數組進行遍歷 48 //pile2.end();指向最後一個元素的下一個位置 49 /*關於迭代器: 50 迭代器(Iterator),提供了訪問容器中對象的方法。 51 例如,可以使用一對迭代器指定list或vector中的一定范圍的對象。 52 迭代器就如同一個指針。事實上,C++的指針也是一種迭代器。 53 但是,迭代器也可以是那些定義了operator*()以及其他類似於指針的操作符地方法的類對象;*/ 54 pile2.insert(pile2.begin()+i,a); 55 //在第i+1個元素前面插入a; 56 pile2.eraser(pile2.begin()+2); 57 //刪除第3個元素 58 pile2.erase(pile2.begin()+i;pile2.begin()+j); 59 //刪除i到j-1的區間(從0開始) 60 cout<<pile2.size()<<endl; 61 //獲取當前不定長數組的大小 62 pile2.clear(); 63 //清空向量 64 cout<<"pile大小是否為0:"<< (pile.empty()?"空":"不空")<<endl; 65 //判斷pile是否為空 66 cout<<"pile可容納的元素最大數量:"<<pile.max_size()<<endl; 67 //判斷Pile可容納的最大數量 68 pile.resize(5); 69 //將元素數量改成5,如果pile變大,則多的按默認走 70 pile.resize(5,9); 71 //將元素數量改成5,如果pile變大,則多的賦值成9
拓展閱讀:
推薦博客地址: 對vector的用法及定義有較為詳細的講解 使用時可以留作參考