向量的存取與操作:
(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,
留言列表