程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用方法總結,stlvector

【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用方法總結,stlvector

編輯:C++入門知識

【算法專題】工欲善其事必先利其器—— C++ STL中vector(向量/不定長數組)的常用方法總結,stlvector


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved