Vector是什么?
vector翻譯為向量,從某種角度來說就是一個可以變長的數組,它會根據需要自動擴充數組的容量,除此之外其是一個STL中的模板類,其
還具有一些內部的方法。
Vector的使用方法
1.添加頭文件
# include <iostream> # include <vector> using namespace std;
2.定義vector的對象
vector<int> name; vector<double> name;//雙精度型 vector <float> name;//浮點數型 vector <char> name;//字符型
vector<vector<int>> name;//類似二維數組
3.訪問vector內部元素
1)通過下標訪問元素
//通過下標來訪問 vector<typename> v; cout<<v[0]<<endl;
2)通過迭代器來訪問
迭代器可以理解為類似指針的東西,定義其的方法。
vector<typename> ::iterator it; vector<int>::iterator it; vector<float>::iterator it;
舉例
# include <iostream> # include <vector> using namespace std; int main(void) { vector<int> vi; for(int i=1;i<=5;i++) { vi.push_back(i); } //vi.begin()是取vi的首地址,it指向該地址 vector<int>::iterator it=vi.begin(); for(int i=0;i<5;i++) { cout<<*(it+i)<<endl; } }
結果
注意begin()函數返回的是vector數組的首地址,而end()並不是返回尾地址,而是末尾元素的下一個元素的地址。除此之外迭代器還實現了兩種自增操作it++和++it
因此使用迭代器遍歷的第二種方法。
# include <iostream> # include <vector> using namespace std; int main(void) { vector<int> vi; for(int i=0;i<5;i++) { vi.push_back(i); }
//不支持it<vi.end()的寫法 for(vector<int>::iterator it=vi.begin();it!=vi.end();it++) { cout<<*it<<' '<<endl; } return 0; }
4.常用函數的使用
1)push_back()
功能:在vector的末尾后面添加一個元素
# include <iostream> # include <vector> using namespace std; int main(void) { vector<int> vi; for(int i=0;i<5;i++) { vi.push_back(i); } for(int i=0;i<5;i++) { cout<<vi[i]<<' '; } return 0; }
2)pop_back()
vector<int> vi; for(int i=0;i<3;i++) { vi.push_back(i); } //0,1,2 vi.pop_back();//0,1 for(int i=0;i<vi.size();i++) { cout<<vi[i]<<' ';//0,1 }
3)size()
vector<int> vi; int size=vi.size();//返回當前元素數目
4)clear()
vector<int> vi; for(int i=0;i<5;i++) vi.push_back(i);//依次加入0,1,2,3,4 vi.clear();//清空所有元素,size=0
5)insert()
vector<int> vi; for(int i=0;i<5;i++) { vi.push_back(i); } vi.insert(vi.begin()+2,-1);//-1插入vi[2]的位置
6)erase()
vector<int> vi; vi.erase(vi.beigin()+3);//刪除單個元素,刪除vi[3] vi.erase(vi.beigin()+1,vi.begin()+4);//刪除多個元素,刪除【first,end】之間的所有元素