日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]C++的新風格如果是10年前,C++語言也好,程序員也好,應(yīng)該是相當自信的。但是近年來,各種新語言,新架構(gòu)不斷涌現(xiàn),C++的地位雖然談不上動搖,但是許多場合被人搶了風頭也是事實。因此C++的代碼風格也

C++的新風格


如果是10年前,C++語言也好,程序員也好,應(yīng)該是相當自信的。但是近年來,各種新語言,新架構(gòu)不斷涌現(xiàn),C++的地位雖然談不上動搖,但是許多場合被人搶了風頭也是事實。因此C++的代碼風格也在發(fā)生改變。今天的范圍for語句就算是一個例子。


功能介紹


循環(huán)最常見的的場景就是對數(shù)據(jù)集合的每一個元素進行某種操作。C++11之前,大致是這樣的程序:

?

int a[] = {1, 2, 3, 4};

int sum = 0;

for(int i = 0 ; i < sizeof(a)/sizeof(a[0]); ++i){

????????sum += a[i];



或者是這樣


vector

int sum = 0;

for(auto it = v.begin(); it != v.end(); it++){

????sum += *it;

}


可以看出,雖然目的只是對數(shù)據(jù)集合中的每個元素進行求和,還是要做如下幾件事:

定義和初始化循環(huán)變量

判斷循環(huán)條件

調(diào)整循環(huán)變量



C++程序員已經(jīng)熟悉了這些過程,但還是麻煩了一些。大概是因為這個原因,C++11引入了范圍for語句:


int?array[]{1,?2,?3,?4};

int?sum?=?0;

?for(int a : array){

?????sum?+=?a;

}


vector

int?sum?=?0;

for(int?v:?vect){

????sum?+=?v;

}


for(int v : vect)讀作“對于vect中的每一個v”。應(yīng)該說,程序簡練了不少。


運用條件


是不是所有地數(shù)據(jù)集合可以交給范圍for遍歷呢?答案是否定的。


數(shù)據(jù)v被范圍for遍歷的條件是,該數(shù)據(jù)支持v.begin()/v.end()或者是begin(v)/end(v)并返回一個迭代器。STL中的容器都滿足上述條件。對于內(nèi)置類型的數(shù)組來講C++編譯器提供了等同于上述接口的機制,因此也可以在范圍for中使用。


作者觀點


C++變得越來越不像C++了,不知道是好事還是壞事。



本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉