vector(一) 定義和初始化

2021-10-07 09:09:19 字數 1535 閱讀 3557

《基於 c++ primer p87>

標準庫型別 vector 表示物件的集合,其中所有物件的型別都相同。使用 vector 必須包含適當的標頭檔案。

vector 是類模版而非型別,模版可以看作為編譯器生成類或函式編寫的乙份說明,編譯器根據模版建立類或函式的過程成為例項化。

由於引用不是物件,因此不存在包含引用的 vector,除此之外大多數型別都可以構成 vector 物件,甚至組成 vector 的元素也可以,如:vector>

1.初始化 vector 物件的方法

vector v1

vector

v2(v1)

vector v2 = v1

vector

v3(n, val)

vector

v4(n)

// v4 中包含了 n 個重複地執行了值初始化的物件

vector v5

vector v5 =

我們也可以預設初始化 vector 物件,從而建立乙個指定型別的空 vector。由於程式在執行時可以很高效地往 vector 物件中新增元素,因此最常見的方式就是先定義乙個空 vector,然後當執行時獲取到元素的值後再逐一新增。

2.列表初始化 vector 物件,注意只能使用花括號。

3.建立指定數量的元素,通過元素數量和統一的初始值。

4.值初始化

通常情況下,可以只提供 vector 物件容納的元素數量而略去初始值,此時庫會建立乙個值初始化的元素初值賦給容器中的所有元素。這個初值由 vector 物件中元素的型別決定。內建型別,如 int,初始化為0;類型別,如 string,由類預設初始化。

兩個限制:一是不適用於要求明確地提供初始值的類,二是只能使用直接初始化。

5.區分列表初始值與元素數量

(1)圓括號提供的值是用來構造 vector 物件的,花括號提供的值是用來列表初始化 vector 物件的。

vector<

int>v1(

10);// v1 有 10 個元素,每個值都是 0

vector<

int> v2

;// v2 有 1 個元素,該元素的值是 10

vector<

int>v3(

10,1)

;// v3 有 10 個元素,每個的值都是 1

vector<

int> v4

;// v4 有 2 個元素,值分別是 10 和 1

(2)如果初始化時使用了花括號的形式但是提供的值不能用來列表初始化,則考慮使用這樣的值構造 vector 物件。

vector v5

;// 列表初始化,v5 有乙個元素

vectorv6(

"hi");

// 錯誤:不能使用字串字面值構建 vector 物件

vector v7

;// v7 有 10 個預設初始化的元素

vector v8

;// v8 有 10 個值為「hi」的元素

定義和初始化vector物件

和任何一種類型別一樣,vector模板控制著定義和初始化向量的方法。下面列出了定義vector物件的常用方法。預設初始化 vector物件從而建立乙個指定型別的空vector vector svec 預設初始化,svec不含任何元素看起來空vector好像沒什麼用,但是很快我們就會知道程式在執行時可...

vector 多維向量定義及其初始化

using namespace std 一維向量 vector vector 1d 1 只定義向量 vector vector 1d 2 n 定義的同時初始化大小 vector vector 1d 3 n,m 定義的同時初始化大小為n,元素初始值為m vector vector 1d 4 vecto...

Vector初始化及用法

vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 c 引入的標準庫的一部分 為了使用vector 我們必須包含相關的標頭檔案 include 使用vector有兩種不同的形式,即所謂的陣列習慣和 stl習慣。一 陣列習慣用法 1.定義乙個已知長度的 vect...