国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++ vector用法 入門必看 超詳細(xì)

這篇具有很好參考價(jià)值的文章主要介紹了c++ vector用法 入門必看 超詳細(xì)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wè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顯得更加靈活易用。

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

2、vector的定義

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

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

3、vector常用的成員函數(shù)

//這些都是必會(huì)的成員函數(shù)
size()//返回返回容器中元素個(gè)數(shù)
begin()//返回頭部迭代器
end()//返回尾部+1迭代器
rbegin()//返回逆首部迭代器
rend()//返回逆尾部-1迭代器
front()//返回首個(gè)元素
back()//返回尾部元素
push_back()//在末尾添加一個(gè)元素
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<iostream>//c++標(biāo)準(zhǔn)頭文件,可以使用cout,cin等標(biāo)準(zhǔn)編譯用法
#include<vector>//使用vector時(shí)需要的頭文件 
#include<algorithm>//包含許多內(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<<c<<' ';
	}
	cout<<endl;
}
int main(){
	vector<int> v;//定義一個(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<<endl;
	
	cout<<"v.front()="<<v.front()<<endl;
	cout<<"v.back()="<<v.back()<<endl;
	cout<<endl;
	
//	排序
	sort(v.begin(),v.end());
	cout<<"排序后 :";
	print(v);
	cout<<"v.front()="<<v.front()<<endl;
	cout<<"v.back()="<<v.back()<<endl;
	cout<<"v.size()="<<v.size()<<endl;
	cout<<endl;
	
//	插入5、6 
	v.insert(v.begin()+2,{5,6}); 
	cout<<"插入5、6后: ";
	print(v);
	cout<<endl;
	
//	倒置
	reverse(v.begin(),v.end());
	cout<<"倒置后: ";
	print(v);
	cout<<endl;
	
//	逆序排序 
	sort(v.rbegin(),v.rend());
	cout<<"逆序排序后 :";
	print(v);
	
//	判斷是否為空
	cout<<"v.empty()="<<v.empty()<<endl; 
	cout<<"(v.size()==0)="<<(v.size()==0)<<endl;
	cout<<endl;
	
	v.clear();
	cout<<"v清空后"<<endl; 
	cout<<"v.empty()="<<v.empty()<<endl; 
	cout<<"(v.size()==0)="<<(v.size()==0)<<endl;
} 

運(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<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	vector<int>::iterator it;//使用迭代器
	for(it=v.begin();it!=v.end();it++){
		cout<<*it<<' ';
	} 
} 

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

1 3 2

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

代碼:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int i=0;i<v.size();i++){
		cout<<v[i]<<' ';
	}
} 

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

1 3 2

(3)foreach遍歷

代碼:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	for(int c:v){
		cout<<c<<' ';
	}
} 

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

1 3 2

兩種逆序遍歷:
代碼:

#include<iostream>
#include<vector>
using namespace std;
int main(){
	vector<int> v;//定義 
	v.emplace_back(1);//插入元素1 
	v.emplace_back(3);//插入元素3
	v.emplace_back(2);//插入元素2
	
//	迭代器法 
	vector<int>::reverse_iterator it;//使用迭代器
	for(it=v.rbegin();it!=v.rend();it++){
		cout<<*it<<' ';
	} 
	cout<<endl;
	
//	下標(biāo)遍歷法
	for(int i=v.size()-1;i>=0;i--){
		cout<<v[i]<<' ';
	} 
} 

運(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é)得難,多些做題多些用,熟悉了就容易了,兄弟萌,加油!??!

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

感謝觀看,點(diǎn)個(gè)贊吧文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-789942.html

到了這里,關(guān)于c++ vector用法 入門必看 超詳細(xì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包