close

按此前往C++完整教學目錄

 

 

1. 欲使用向量,必須先在標頭檔寫入 #include <vector>

2. 在記憶空間上,向量的每個元素之間所佔的記憶空間是相鄰的(這點和矩陣相同)。但為使向量可以隨時加入元素,一個向量所使用的記憶空間便不是恆定的。

  向量所佔有的記憶空間分為兩種:一為既用空間,即向量既有元素所佔有的空間。一為預留空間,即向量在建構時預留給元素用的空間(既用空間+尚未用到的空間)。若加入的元素溢出了預留空間,系統會自動將向量搬移至與更多空白空間連接的空間,並且增加預留空間以供更多元素加入。

 

3. 向量的建構有許多方式:

vector<資料形態> 向量名稱//建構向量,但不設向量大小與初始值

vector<資料形態> 向量名稱(n) ;  //建構向量,設向量大小為可容納n個元素

vector<資料形態> 向量名稱(n, 資料值) ;  //建構向量,設向量大小為可容納n個元素,且每個元素都是資料值。如:vector<int> V1(10, 5); vector<char> V2(10,’a’)

註:資料型態不只可為一般常見的資料形態,如intstringbooldouble…等,也可以為結構物件或者類別物件。不過物件必須寫在主程式之前:

class person //建構類別person

{   

public:

string name;

int age;

person(string name_,int age_,int money_)

{name=name_;age=age_; money = money_;}

private:

int money;

};

 

void main( ){  //主程式在此

person person1("wiewie",18,2000);

person person2("nunu",19,2500);

person person3("ting",23,1800);

vector<person> a;   //建立存放person物件的向量a

vector<person>::iterator i;  //宣告存放person物件之向量的迭代器i(請參看迭代器篇)

a.push_back(person1);

a.push_back(person2);

a.push_back(person3);

for(i=a.begin();i!=a.end();i++)

{cout<<(*i).name<<",";}  //顯示:weiwei,nunu,ting,

}

註一:cout<<(*i).name<<",";若是寫成cout<<*i.name<<",";,編譯器會以為是cout<<*(i.name)<<",";,即會發生編譯錯誤。

註二:二維向量之宣告法為:

vector< vector<資料形態> > 向量名稱;

要注意的是,>>必須要用空白字元隔開,如果寫成>>,編譯器會以為這是輸入運算子,而產生錯誤。

 

 

上一篇:檔案輸入輸出的定位

下一篇:向量的操作

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(4) 人氣()