close

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

 

 

向量的存取與操作:

(1) 將資料值存取入向量的尾端:

向量名稱.push_back(資料值);

(2) 將向量尾端的資料值刪除:

向量名稱.pop_back();

(3) 回傳向量元素個數:

向量名稱.size();

(4) 利用序數直接呼叫向量中第n個元素:

cout<<向量名稱[n];  //例:

vector<int> a;

for(int i=0;i<10;i++){

a.push_back(i);}

cout<<a[0];  //顯示0

(5) 利用at函式讀取向量中第n個元素:向量名稱.at(元素序數)

vector<int> a;

a.push_back(10);

a.push_back(15);

a.push_back(20);

cout<<a.at(1);  //顯示15

cout<<a.at(3);  //序數3超過了向量a最大的序數,造成執行錯誤

(6) 利用swap函數將兩向量對調:向量名稱1.swap(向量名稱2)

vector<int> a(5,1) ,b(5,2);

for(int i=0;i<5;i++){

cout<<a.at(i);}cout<<endl;   //顯示11111

for(int i=0;i<5;i++){  

cout<<b.at(i);}cout<<endl;   //顯示22222

a.swap(b);   //將向量a和向量b對調

for(int i=0;i<5;i++){

cout<<a.at(i);}cout<<endl;   //顯示22222

for(int i=0;i<5;i++){

cout<<b.at(i);}cout<<endl;   //顯示11111

(7) 利用front函式和back函式存取一向量的首位或末位元素:

vector<int> a(5,1);

a.front()=6;   

a.back()=9;

cout<<a.front()<<endl;   //顯示6

cout<<a.back()<<endl;   //顯示9

for(int i=0;i<5;i++){

cout<<a.at(i);}cout<<endl;   //顯示61119

(8) 將向量所有元素都移除,使向量清空成為空向量:

向量名稱.clear();

確認向量是否為空向量:

向量名稱.empty();  //回傳布林值

(9) 強迫向量改變長度:

vector<int> a(10,1);   //向量a長度為10個元素,每個值都是1

a.resize(6);    //向量a長度為6個元素,每個值都是1,有4個元素被強迫刪除。

a.resize(16,2);  //向量a長度為16個元素,前六個值是1,後十個新增的值為2

(10) 指定向量位置,插入消除元素(關於迭代器(iterator),請參看迭代器篇)

vector<int>::iterator i;

vector<int> a , b;

b.push_back(6);b.push_back(7);

for(int k=1;k<6;k++)a.push_back(k);

for(i=b.begin();i!=b.end();i++){

cout<<*i;}cout<<endl;    //顯示 67

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

cout<<*i;} cout<<endl;    //顯示12345

[操作程式碼]

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

cout<<*i;} cout<<endl;   //結果顯示

插入函式1向量名稱.insert(開始插入的迭代器位址 , )

[操作程式碼]a.insert(a.begin()+2,9);,結果顯示為129345

插入函式2向量名稱.insert(開始插入的迭代器位址 , 欲插入的元素個數 , )

[操作程式碼]a.insert(a.begin()+2,3,9);,結果顯示為12999345

插入函式3,可將其他向量切下複製、插入此向量內:向量名稱.insert(開始插入的迭代器位址 , 其他向量被切下之元素的首位迭代器位址 , 其他向量被切下之元素的末位迭代器位址(本身不包含) )

[操作程式碼]a.insert(a.begin()+2,b.begin(),b.end());,結果顯示為1267345

消除函式1向量名稱.erase(欲消除元素的迭代器位址)

[操作程式碼]a.erase(a.begin()+3);,結果顯示為1235

消除函式1向量名稱.erase(欲消除元素的首位迭代器位址 , 欲消除元素的末位迭代器位址(本身不包含) )

[操作程式碼]a.erase(a.begin()+1, a.end()-1);,結果顯示為15

(11)向量排序:

利用函式:sort(記憶空間位址一 , 記憶空間位址二); 將兩記憶空間之間的元素排序(預設為升序排序,也就是由小到大)。例:

int tta[10]={24,13,8,1,67,89,2,13,6,27};

vector<int> a(tta,tta+10);

vector<int>::iterator i;

sort(a.begin(),a.end()-1);    //a.begin()a.end()-1之間的元素按升序排序

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

cout<<*i<<",";}    //顯示結果為:1,2,6,8,13,13,24,67,89,27,

 

 

上一篇:向量

下一篇:迭代器 iterator

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

    程式語言教學

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