午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

UC頭條:C 11之基于范圍的for循環(huán)

 cnzrp 2023-06-22 發(fā)布于山西

基于范圍的for循環(huán)

C++98遍歷方式

在C++98標(biāo)準(zhǔn)中,當(dāng)我們遍歷數(shù)組時(shí),一般方法就是下標(biāo)遍歷和指針遍歷。

intarr[]={1,2,3,5,6};//下標(biāo)遍歷for(size_ti=0;i<>

當(dāng)然還有一種遍歷方式,需要包含頭文件的for_each遍歷。參數(shù)依次是:起始地址、結(jié)束地址、回調(diào)函數(shù)。地址是左閉右開區(qū)間[begin,end)。

#include#includevoidprint(constint&elem){std::cout<

C++11范圍遍歷

上述的幾種遍歷方式的共同點(diǎn)就是都需要寫明循環(huán)的一個(gè)范圍。對(duì)于我們需要完整的遍歷一個(gè)有范圍的集合/數(shù)組時(shí),完全可以讓編譯器自動(dòng)計(jì)算出范圍。因此C++11引入了基于范圍的for循環(huán)

格式:for(迭代的變量:數(shù)組){}

現(xiàn)在我們使用范圍遍歷對(duì)數(shù)組進(jìn)行遍歷。

for(constint&e:arr){std::cout<<>

然后我們可以在這里加入auto自動(dòng)類型(C++11),遍歷將會(huì)更加簡(jiǎn)單。

for(constauto&elem:arr){std::cout<<>

但范圍遍歷不能適用于所有情況,范圍遍歷的條件就是循環(huán)迭代的范圍必須是可確定的。例如string、array、vector、list、map等都是可以正常使用的。而用戶自定義寫的類則需要自行提供自增運(yùn)算符重載賦值運(yùn)算符重載

int*ptr=arr;for(autoelem:ptr){std::cout<<>

遍歷沒有明確范圍的數(shù)組,是不能使用范圍遍歷方法的。

點(diǎn)擊加載圖片

在使用范圍遍歷的方式遍歷stl的容器時(shí),如果你使用auto聲明迭代器的變量,那么推導(dǎo)出來的類型是迭代器解引用后的對(duì)象。

std::vectorvec{1,5,6,9,4};for(constautoiter=vec.begin;iter!=vec.end;++iter){std::cout<<*iter<<'';}std::cout<<><><>

這里就需要注意了前者iter類型是迭代器對(duì)象,后者elem是解引用后的對(duì)象。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多