vector的用法
關(guān)鍵概念: vector 容器可動(dòng)態(tài)動(dòng)態(tài)地添加元素個(gè)數(shù).
vector 是同一種類型的對(duì)象的集合,每個(gè)對(duì)象都有一個(gè)對(duì)應(yīng)的整數(shù)索引值。和 string對(duì)象一樣,標(biāo)準(zhǔn)庫負(fù)責(zé)管理存儲(chǔ)元素的相關(guān)內(nèi)存。我們把vector稱為容器,是因?yàn)樗梢园渌麑?duì)象。一個(gè)容器中的所有對(duì)象都必須是同一種類型的。
vector 是一個(gè) 類模板 ( class template)。模板允許程序員編寫單個(gè)類或函數(shù)定義,這個(gè)類和函數(shù)定義可用于不同的數(shù)據(jù)類型上。因此,我們可以定義保存 string 對(duì)象的vector ,或保存 int 值的 vector ,或保存自定義的類類型對(duì)象(如 Sales_item 對(duì)象)的 vector。
vector對(duì)象的聲明
使用 vector 之前,必須包含相應(yīng)的頭文件,作相應(yīng)的 using 聲明:
定義vector 對(duì)象
從類模板產(chǎn)生的某種類型的對(duì)象,需要提供附加信息,信息的種類取決于模板。
vector 對(duì)象必須說明 vector保存何種對(duì)象的類型,通過將類型放在類模板名稱后面的尖括號(hào)中來指定類型.
初始化 vector 對(duì)象:
創(chuàng)建確定個(gè)數(shù)的元素
vector<int> ivec4(10,-1);// 10 elements, each initialized to -1
vector<string> svec(10, "hi!"); // 10strings, each initialized to "hi!"
vector<int>ivec1;// ivec1 holds objects of type int
vector<int>ivec2(ivec1);// ok: copy elements of ivec1 into ivec2
vector<string>svec(ivec1);// error: svec holds strings, not ints
值初始化
如果沒有給出元素的初始化式,由庫生成的初始值初始化容器中的每個(gè)元素。而元素初始化式的值取決于存儲(chǔ)在 vector中元素的數(shù)據(jù)類型。
如果向量保存類類型(如 string )的元素,標(biāo)準(zhǔn)庫將用該類型的默認(rèn)構(gòu)造函數(shù) 創(chuàng)建 元素初始值: 還有第三種可能性:元素類型可能是沒有定義任何構(gòu)造函數(shù)的類類型。這種情況下,標(biāo)準(zhǔn)庫仍產(chǎn)生一個(gè)帶初始值的對(duì)象,這個(gè)對(duì)象的每個(gè)成員進(jìn)行了值初始化。
向 vector 添加元素
push_back() 操作接受一個(gè)元素值,并將它作為一個(gè)新的元素添加到 vector 對(duì)象的后面,
string word;
vector<string>text;// empty vector
while (cin >> word)
{
text.push_back(word); // append word to text
}
vector 的下標(biāo)操作

vector 中的對(duì)象是沒有命名的,可以按 vector 中對(duì)象的位置來訪問它們。通常使用下標(biāo)操作符來獲取元素。
for (vector<int>::size_type ix =0; ix != ivec.size(); ++ix)
ivec[ix]= 0;
vector 的操作
vector 標(biāo)準(zhǔn)庫提供許多類似于 string 對(duì)象的操作,列出了幾種最重要的 vector 操作。
愛華網(wǎng)


