【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用辦法總結。本站提示廣大學習愛好者:(【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用辦法總結)文章只能為提供參考,不一定能成為您想要的結果。以下是【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用辦法總結正文
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的用法及定義有較為詳細的解說 運用時可以留作參考