c++vector用法入門必看超詳細(xì)-創(chuàng)新互聯(lián)

1、vector的作用

vector是最常用的容器之一,功能十分強(qiáng)大,可以儲(chǔ)存、管理各種類型的數(shù)據(jù)。在很多情況下可以用來(lái)代替功能比較局限的普通數(shù)組,因?yàn)槲覀冎?,普通?shù)組只能實(shí)現(xiàn)一對(duì)一的映射而不能實(shí)現(xiàn)一對(duì)多的映射,vector就是專門為了解決這個(gè)問(wèn)題而誕生的。vector也可以稱為動(dòng)態(tài)數(shù)組,因?yàn)槠浯笮∈歉鶕?jù)實(shí)時(shí)更新而變化的,正因?yàn)槿绱藇ector顯得更加靈活易用。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的瑪曲網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

舉個(gè)例子
小明擁有一根香蕉和兩個(gè)蘋果
小芳擁有一根棒棒糖個(gè)三個(gè)梨
那么你試著思考一下,應(yīng)當(dāng)如何在程序中表示這種結(jié)構(gòu)呢?這就是一對(duì)多映射的例子,學(xué)完vector就可以輕松解決這個(gè)問(wèn)題了。

2、vector的定義

vector<儲(chǔ)存的類型>容器名
如:
儲(chǔ)存int型的值 vectorv;
儲(chǔ)存double型的值 vectorv;
儲(chǔ)存string型的值 vectorv;
儲(chǔ)存結(jié)構(gòu)體或者類的值的值 vector<結(jié)構(gòu)體名>v;

當(dāng)然也可以定義vector數(shù)組:
儲(chǔ)存int型的值 vectorv[n];
儲(chǔ)存double型的值 vectorv[n];
等等,n為數(shù)組的大小

3、vector常用的成員函數(shù)
//這些都是必會(huì)的成員函數(shù)
size()//返回返回容器中元素個(gè)數(shù)
begin()//返回頭部迭代器
end()//返回尾部+1迭代器
rbegin()//返回逆首部迭代器
rend()//返回逆尾部-1迭代器
front()//返回首個(gè)元素
back()//返回尾部元素
push_back()//在末尾添加一個(gè)函數(shù)
emplace_back()//和push_back()是一樣的作用
pop_back()//彈出最后一個(gè)元素
empty()//判斷是否為空
insert()//在指定位置插入元素
erase()//在指定位置刪除元素
clear()//清空容器

詳細(xì)解析:
(1)size()
size()是最常用的成員函數(shù)了,常用于vector的遍歷和元素個(gè)數(shù)的查詢

(2)push_back()
出了初始化以外,push_back()是vector最重要的修改函數(shù)了,復(fù)雜度為O(1),而insert()的復(fù)雜度為O(n),差距明顯

(3)front()、back()
查詢首元素和未元素,其實(shí)通過(guò)隨機(jī)訪問(wèn),v[0]、v[v.size()-1]是可以達(dá)到相同效果的,用front()和back()顯得專業(yè)點(diǎn)

(4)begin()、end()
通常用來(lái)方便排序的,也可以用來(lái)遍歷,但沒(méi)必要,通過(guò)下標(biāo)遍歷更簡(jiǎn)單快捷,rbegin()、rend()則可以用來(lái)逆序排序

(5)insert()
insert (position, x );
insert (position, n, x );
insert (position, first, last );
插入新的元素,
第一個(gè)函數(shù),在迭代器指定的位置前插入值為x的元素
第二個(gè)函數(shù),在迭代器指定的位置前插入n個(gè)值為x的元素
第三個(gè)函數(shù),在迭代器指定的位置前插入另外一個(gè)容器的一段序列迭代器first到last
復(fù)雜度很高,迫不得已不使用

(6)erase()
erase ( position );
erase (first, last );
刪除元素或一段序列
同樣地,復(fù)雜度很高,迫不得已不使用

示例代碼:

#include//c++標(biāo)準(zhǔn)頭文件,可以使用cout,cin等標(biāo)準(zhǔn)編譯用法
#include//使用vector時(shí)需要的頭文件 
#include//包含許多內(nèi)置函數(shù),如排序、倒置、交換等函數(shù) 
using namespace std;//命名空間,防止重名給程序帶來(lái)各種隱患,使用cin,cout,map,set,vector,queue時(shí)都要使用
//遍歷函數(shù) 
void print(auto v){for(auto c:v){cout<vectorv;//定義一個(gè) int型vector 
	
	v.emplace_back(3);
	v.emplace_back(4);
	v.emplace_back(1);
	v.emplace_back(2);
	cout<<"現(xiàn)在有的元素 :";
	print(v);
	cout<

運(yùn)行結(jié)果:

現(xiàn)在有的元素 :3 4 1 2

v.front()=3
v.back()=2

排序后 :1 2 3 4
v.front()=1
v.back()=4
v.size()=4

插入5、6后: 1 2 5 6 3 4

倒置后: 4 3 6 5 2 1

逆序排序后 :6 5 4 3 2 1
v.empty()=0
(v.size()==0)=0

v清空后
v.empty()=1
(v.size()==0)=1
4、vector的三種遍歷方法 (1)迭代器iterator

代碼:

#include#includeusing namespace std;
int main(){vectorv;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	vector::iterator it;//使用迭代器
	for(it=v.begin();it!=v.end();it++){cout<<*it<<' ';
	} 
}

運(yùn)行結(jié)果:

1 3 2
(2)下標(biāo)遍歷

代碼:

#include#includeusing namespace std;
int main(){vectorv;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int i=0;icout<

運(yùn)行結(jié)果:

1 3 2
(3)foreach遍歷

代碼:

#include#includeusing namespace std;
int main(){vectorv;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int c:v){cout<

運(yùn)行結(jié)果:

1 3 2

兩種逆序遍歷:
代碼:

#include#includeusing namespace std;
int main(){vectorv;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	
//	迭代器法 
	vector::reverse_iterator it;//使用迭代器
	for(it=v.rbegin();it!=v.rend();it++){cout<<*it<<' ';
	} 
	cout<=0;i--){cout<

運(yùn)行結(jié)果:

2 3 1
2 3 1

foreach雖然簡(jiǎn)單易用,但是不支持逆序遍歷

有小伙伴發(fā)現(xiàn)dev不能編譯部分代碼,那是因?yàn)閐ev還未支持c++11,可以看這篇文章解決
dev使用c++11教程

是不是很簡(jiǎn)單呢?

剛接觸肯定會(huì)覺(jué)得難,多些做題多些用,熟悉了就容易了,兄弟萌,加油?。。?/p>

文章尚有不足,歡迎大牛們指正

感謝觀看,點(diǎn)個(gè)贊吧

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前名稱:c++vector用法入門必看超詳細(xì)-創(chuàng)新互聯(lián)
鏈接URL:http://muchs.cn/article48/csghhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、品牌網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)