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的用法及定義有較為詳細的講解 使用時可以留作參考