C++ vector常見用法總結
阿新 • • 發佈:2018-12-07
此文為個人學習備份,點選這裡訪問原文。
vector是一個動態的序列容器,相當於一個size可變的陣列。
相比於陣列,vector會消耗更多的記憶體以有效的動態增長。而相比於其他動態序列容器(deques, lists and forward_lists),vector能更快的索引元素(就像陣列一樣),而且能相對高效的在尾部插入和刪除元素。如果不是在尾部插入和刪除元素,效率就沒有這些容器高。
當需要使用vector的時候,需要包含標頭檔案:#include <vector>,一般加上using namespace std;如果不加,則在呼叫時候必須用std::vector<...>這樣的形式,即在vector前加上std::,這表示運用的是std名稱空間下的vector容器。
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.新增元素
vector<int> a;
a.push_back(1); //在尾部加入一個數據
a.push_back(2);
a.pop_back(); //刪除最後一個數據
a.insert(a.begin(), 0); //在a.begin()之前加入0
a.erase(a.begin()); //將a.begin()的元素刪除
a.erase(a.begin() + 1, a.end()); //將第二個元素以後的元素均刪除
3.判斷vector是否為空
vector<int> a; if(a.empty()){ a.push_back(1); }
4.遍歷訪問vector
vector<int> a;
//像陣列一樣以下標訪問
for(int i = 0; i < a.size(); i++){
cout << a[i];
}
5排序時要包含 algorithm標頭檔案
#include <algorithm>
vector<int> a;
sort(a.begin(), a.end());
6.vector的二維陣列
vector<vector<int>> a(10, vector<int>(5)); //建立一個10行5列的int型二維陣列 相當於a[10][5];