向量(Vector)是一個封裝了動態大小數組的順序容器(Sequence Container)。跟任意其它類型容器同樣,它可以存放各類類型的對象。能夠簡單的認爲,向量是一個可以存聽任意類型的動態數組。linux
順序容器中的元素按照嚴格的線性順序排序。能夠經過元素在序列中的位置訪問對應的元素。ios
支持對序列中的任意元素進行快速直接訪問,甚至能夠經過指針算述進行該操做。操供了在序列末尾相對快速地添加/刪除元素的操做。數組
容器使用一個內存分配器對象來動態地處理它的存儲需求。函數
1.構造函數spa
1.push_back 在數組的最後添加一個數據.net
2.pop_back 去掉數組的最後一個數據指針
3.at 獲得編號位置的數據code
4.begin 獲得數組頭的指針對象
5.end 獲得數組的最後一個單元+1的指針blog
6.front 獲得數組頭的引用
7.back 獲得數組的最後一個單元的引用
8.max_size 獲得vector最大能夠是多大
9.capacity 當前vector分配的大小
10.size 當前使用數據的大小
11.resize 改變當前使用數據的大小,若是它比當前使用的大,者填充默認值
12.reserve 改變當前vecotr所分配空間的大小
13.erase 刪除指針指向的數據項
14.clear 清空當前的vector
15.rbegin 將vector反轉後的開始指針返回(其實就是原來的end-1)
16.rend 將vector反轉構的結束指針返回(其實就是原來的begin-1)
17.empty 判斷vector是否爲空
18.swap 與另外一個vector交換數據
#include < vector> using namespace std;
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj;//建立一個向量存儲容器 int for(int i=0;i<10;i++) // push_back(elem)在數組最後添加數據 { obj.push_back(i); cout<<obj[i]<<","; } for(int i=0;i<5;i++)//去掉數組最後一個數據 { obj.pop_back(); } cout<<"\n"<<endl; for(int i=0;i<obj.size();i++)//size()容器中實際數據個數 { cout<<obj[i]<<","; } return 0; }
輸出結果爲:
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj; for(int i=0;i<10;i++)//push_back(elem)在數組最後添加數據 { obj.push_back(i); cout<<obj[i]<<","; } obj.clear();//清除容器中因此數據 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<endl; } return 0; }
輸出結果爲:
0,1,2,3,4,5,6,7,8,9,
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { vector<int>obj; obj.push_back(1); obj.push_back(3); obj.push_back(0); sort(obj.begin(),obj.end());//從小到大 cout<<"從小到大:"<<endl; for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } cout<<"\n"<<endl; cout<<"從大到小:"<<endl; reverse(obj.begin(),obj.end());//從大到小 for(int i=0;i<obj.size();i++) { cout<<obj[i]<<","; } return 0; }
輸出結果爲:
從小到大: 0,1,3, 從大到小: 3,1,0,
1.注意 sort 須要頭文件 #include <algorithm>
2.若是想 sort 來降序,可重寫 sort
bool compare(int a,int b) { return a< b; //升序排列,若是改成return a>b,則爲降序 } int a[20]={2,4,1,23,5,76,0,43,24,65},i; for(i=0;i<20;i++) cout<< a[i]<< endl; sort(a,a+20,compare);
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { //順序訪問 vector<int>obj; for(int i=0;i<10;i++) { obj.push_back(i); } cout<<"直接利用數組:"; for(int i=0;i<10;i++)//方法一 { cout<<obj[i]<<" "; } cout<<endl; cout<<"利用迭代器:" ; //方法二,使用迭代器將容器中數據輸出 vector<int>::iterator it;//聲明一個迭代器,來訪問vector容器,做用:遍歷或者指向vector容器的元素 for(it=obj.begin();it!=obj.end();it++) { cout<<*it<<" "; } return 0; }
輸出結果爲:
直接利用數組:0 1 2 3 4 5 6 7 8 9 利用迭代器:0 1 2 3 4 5 6 7 8 9
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int N=5, M=6; vector<vector<int> > obj(N); //定義二維動態數組大小5行 for(int i =0; i< obj.size(); i++)//動態二維數組爲5行6列,值全爲0 { obj[i].resize(M); } for(int i=0; i< obj.size(); i++)//輸出二維動態數組 { for(int j=0;j<obj[i].size();j++) { cout<<obj[i][j]<<" "; } cout<<"\n"; } return 0; }
#include <string.h> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int N=5, M=6; vector<vector<int> > obj(N, vector<int>(M)); //定義二維動態數組5行6列 for(int i=0; i< obj.size(); i++)//輸出二維動態數組 { for(int j=0;j<obj[i].size();j++) { cout<<obj[i][j]<<" "; } cout<<"\n"; } return 0; }
輸出結果爲:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0