vector的幾種初始化和遍歷

2021-08-21 13:46:06 字數 2509 閱讀 3350

一、關於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的初始值

intn = ;

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(inti = 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...