轉(zhuǎn)自C++ vector的用法(整理)
#include <vector>
一、vector初始化的五種方式
(1) vector<int> a(10); //定義了10個(gè)整型元素的向量(尖括號中為元素類型名检诗,它可以是任何合法的數(shù)據(jù)類型)匈仗,但沒有給出初值,其值是不確定的逢慌。
(2)vector<int> a(10,1); //定義了10個(gè)整型元素的向量,且給出每個(gè)元素的初值為1
(3)vector<int> a(b); //用b向量來創(chuàng)建a向量悠轩,整體復(fù)制性賦值
(4)vector<int> a(b.begin(),b.begin+3); //定義了a值為b中第0個(gè)到第2個(gè)(共3個(gè))元素
(5)int b[7]={1,2,3,4,5,9,8};
vector<int> a(b,b+7); //從數(shù)組中獲得初值
二、vector對象的重要操作
(1)a.assign(b.begin(), b.begin()+3); //b為向量攻泼,將b的0~2個(gè)元素構(gòu)成的向量賦給a
(2)a.assign(4,2); //是a只含4個(gè)元素火架,且每個(gè)元素為2
(3)a.back(); //返回a的最后一個(gè)元素
(4)a.front(); //返回a的第一個(gè)元素
(5)a[i]; //返回a的第i個(gè)元素鉴象,當(dāng)且僅當(dāng)a[i]存在
(6)a.clear(); //清空a中的元素
(7)a.empty(); //判斷a是否為空,空則返回ture,不空則返回false
(8)a.pop_back(); //刪除a向量的最后一個(gè)元素
(9)a.erase(a.begin()+1,a.begin()+3); //刪除a中第1個(gè)(從第0個(gè)算起)到第2個(gè)元素距潘,也就是說刪除的元素從a.begin()+1算起(包括它)一直到a.begin()+ 3(不包括它)
(10)a.push_back(5); //在a的最后一個(gè)向量后插入一個(gè)元素炼列,其值為5
(11)a.insert(a.begin()+1,5); //在a的第1個(gè)元素(從第0個(gè)算起)的位置插入數(shù)值5,如a為1,2,3,4音比,插入元素后為1,5,2,3,4
(12)a.size(); //返回a中元素的個(gè)數(shù)俭尖;
(13)a.capacity(); //返回a在內(nèi)存中總共可以容納的元素個(gè)數(shù)
(14)a.resize(10); //將a的現(xiàn)有元素個(gè)數(shù)調(diào)至10個(gè),多則刪洞翩,少則補(bǔ)稽犁,其值隨機(jī)
(15)a.resize(10,2); //將a的現(xiàn)有元素個(gè)數(shù)調(diào)至10個(gè),多則刪骚亿,少則補(bǔ)已亥,其值為2
(16)a.reserve(100); //將a的容量(capacity)擴(kuò)充至100
(17) a.swap(b); //將a,b整體互換
(18)a.reserve(100); //將a的容量(capacity)擴(kuò)充至100,也就是說現(xiàn)在測試a.capacity();的時(shí)候返回值是100.這種操作只有在需要給a添加大量數(shù)據(jù)的時(shí)候才顯得有意義来屠,因?yàn)檫@將避免內(nèi)存多次容量擴(kuò)充操作(當(dāng)a的容量不足時(shí)電腦會(huì)自動(dòng)擴(kuò)容虑椎,當(dāng)然這必然降低性能)
三、順序訪問vector方式
(1)向量中添加元素
- 向向量a中添加元素
vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);
- 從數(shù)組中選擇元素添加
int a[6]={1,2,3,4,5,6};
vector<int> a;
for(int i=0;i<10;i++)
a.push_back(a[i]);
- 現(xiàn)有向量中選擇元素向向量中添加
int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
b.push_back(*it);
- 文件讀取元素添加
ifstream in("data.txt");
vector<int> a;
for(int i;in>>i) //表示不斷接受輸入并依次存入變量i中
a.push_back(i);
(2)向量中讀取元素
int a[6]={1,2,3,4,5,6};
vector<int> b(a,a+4);
//1.下標(biāo)方式讀取
for(int i=0;i<b.size();i++)
cout<<b[i]<<" ";
//2.通過迭代器讀取
for(vector<int>::iterator it=b.begin();it<b.end();it++)
cout<<*it<<" ";