一、關於vector
本文預設讀者具有一定的c++基礎,故大致敘述,但保證**正確。
vector是乙個動態的序列容器,相當於乙個size可變的陣列。
相比於陣列,vector會消耗更多的記憶體以有效的動態增長。而相比於其他動態序列容器(deques, lists and forward_lists),vector能更快的索引元素(就像陣列一樣),而且能相對高效的在尾部插入和刪除元素。如果不是在尾部插入和刪除元素,效率就沒有這些容器高。
當需要使用vector的時候,需要包含標頭檔案:#include ,一般加上using namespace std;如果不加,則在呼叫時候必須用std::vector<...>這樣的形式,即在vector前加上std::,這表示運用的是std命名空間下的vector容器。
二、常見用法(以int型別為例)
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 = ;
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())
4.遍歷訪問vector
vector<
int
> a;
//像陣列一樣以下標訪問
for
(
int
i = 0; i < a.size(); i++)
//以迭代器訪問
vector<
int
>::iterator it;
for
(it=a.begin(); it!=a.end(); it++)
5.排序必須包含algorithm標頭檔案
#include
vector<
int
> a;
sort(a.begin(), a.end());
6.以vector實現二維陣列
vector> a(10, vector<
int
>(5));
//建立乙個10行5列的int型二維陣列 相當於a[10][5];
同理可以建立三維及以上陣列,這些多維陣列的操作同一維的vector類似。
vector幾種初始化方法
1 不帶引數的建構函式初始化 初始化乙個size為0的vector vector abc 2 帶引數的建構函式初始化 初始化size,但每個元素值為預設值 vector abc 10 初始化了10個預設值為0的元素 初始化size,並且設定初始值 vector cde 10,1 初始化了10個值為1...
vector的幾種初始化方式
1 不帶引數的建構函式初始化 初始化乙個size為0的vector vectorabc 2 帶引數的建構函式初始化 初始化size,但每個元素值為預設值 vectorabc 10 初始化了10個預設值為0的元素 初始化size,並且設定初始值 vectorcde 10,1 初始化了10個值為1的元素...
幾種常用的vector的初始化方法
集中常用的初始化方法 在vs裡執行檢視如下。include using namespace std include int main vector bb aa,aa 5 通過陣列a的位址初始化,注意位址是從0到5 左閉右開區間 vector num 直接用陣列初始化 vector cc 5,4 ve...