1. 程式人生 > >C++ vector常見用法總結

C++ vector常見用法總結

此文為個人學習備份,點選這裡訪問原文。


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];