首先和string一樣要在開頭
#include <vector> #include <string>
和string一樣,也算是一種容器,而且同屬於STL(standard template library)里的好基友
1.初始化向量
vector<int> a ; //聲明一個int型向量a vector<int> a(10) ; //聲明一個初始大小為10的向量 vector<int> a(10, 1) ; //聲明一個初始大小為10且初始值都為1的向量 vector<int> b(a) ; //聲明並用向量a初始化向量b vector<int> b(a.begin(), a.begin()+3) ; //將a向量中從第0個到第2個(共3個)作為向量b的初始值
也可以用數組來初始化向量
int n[] = {1, 2, 3, 4, 5} ; vector<int> a(n, n+5) ; //將數組n的前5個元素作為向量a的初值 vector<int> a(&n[1], &n[4]) ; //將n[1] - n[4]范圍內的元素作為向量a的初值
2.向量元素的輸出和訪問
普通的
1 #include<iostream> 2 #include<vector> 3 4 using namespace std ; 5 6 int main() 7 { 8 vector<int> a(10, 0) ; //大小為10初值為0的向量a 9 10 //對其中部分元素進行輸入 11 cin >>a[2] ; 12 cin >>a[5] ; 13 cin >>a[6] ; 14 15 //全部輸出 16 int i ; 17 for(i=0; i<a.size(); i++) 18 cout<<a[i]<<" " ; 19 20 return 0 ; 21 }
在輸出上,還可以使用迭代器,類似城管一樣,一個一個不漏地弄出來vector里面的元素
比如在這種申明形式下
vector <int> a(b.begin(),b.begin()+3);
中,可以使用城管iterator
//全部輸出 vector<int>::iterator t ; for(t=a.begin(); t!=a.end(); t++) cout<<*t<<" " ;
3.向量的基本操作
1>. a.size() //獲取向量中的元素個數 2>. a.empty() //判斷向量是否為空 3>. a.clear() //清空向量中的元素 4>. 復制 a = b ; //將b向量復制到a向量中 5>. 比較 保持 ==、!=、>、>=、<、<= 的慣有含義 ; 如: a == b ; //a向量與b向量比較, 相等則返回1 6>. 插入 - insert ①、 a.insert(a.begin(), 1000); //將1000插入到向量a的起始位置前 ②、 a.insert(a.begin(), 3, 1000) ; //將1000分別插入到向量元素位置的0-2處(共3個元素) ③、 vector<int> a(5, 1) ; vector<int> b(10) ; b.insert(b.begin(), a.begin(), a.end()) ; //將a.begin(), a.end()之間的全部元素插入到b.begin()前 7>. 刪除 - erase ①、 b.erase(b.begin()) ; //將起始位置的元素刪除 ②、 b.erase(b.begin(), b.begin()+3) ; //將(b.begin(), b.begin()+3)之間的元素刪除 8>. 交換 - swap b.swap(a) ; //a向量與b向量進行交換
4.二維向量
vector< vector<int> > b(10, vector<int>(5)); //創建一個10*5的int型二維向量
輸入輸出的方式
8 vector< vector<int> > b(10, vector<int>(5, 0)) ; 9 10 //對部分數據進行輸入 11 cin>>b[1][1] ; 12 cin>>b[2][2] ; 13 cin>>b[3][3]; 14 15 //全部輸出 16 int m, n ; 17 for(m=0; m<b.size(); m++) //b.size()獲取行向量的大小 18 { 19 for(n=0; n<b[m].size(); n++) //獲取向量中具體每個向量的大小 20 cout<<b[m][n]<<" " ; 21 cout<<"\n" ; 22 } 23