一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C 11系列

 蘭亭文藝 2018-08-31

什么是C++0x?

C++0x是C++最新標(biāo)準(zhǔn)標(biāo)準(zhǔn)化過(guò)程中的曾用名,在這一系列文章中我們將介紹最新標(biāo)準(zhǔn)添加的一系列新的語(yǔ)言特性。在2011年9月份,C++0x正式由官方發(fā)布并命名C++11,現(xiàn)在很多編譯器已經(jīng)支持了部分C++11特性。

C++11包括大量的新特性:主要特征像lambda表達(dá)式和移動(dòng)語(yǔ)義,實(shí)用的類(lèi)型推導(dǎo)關(guān)鍵字auto,更簡(jiǎn)單的容器遍歷方法,和大量使模板更容易使用的改進(jìn)。這一系列教程將包含所以以上特性。

你該關(guān)注C++11嗎?

很明顯,C++11為C++帶來(lái)了大量的新特性。C++11將修復(fù)大量缺陷和降低代碼拖沓,比如lambda表達(dá)式的支持將使代碼更簡(jiǎn)潔。像移動(dòng)語(yǔ)義這種特性會(huì)提高語(yǔ)言內(nèi)核的基礎(chǔ)效率,使你可以寫(xiě)出更快的代碼。對(duì)模板系統(tǒng)的優(yōu)化可以使你更容易寫(xiě)出泛型的代碼。

新的標(biāo)準(zhǔn)庫(kù)同時(shí)也會(huì)包含新的特性,包括對(duì)多線程的支持和優(yōu)化智能指針,后者將給那些還沒(méi)用類(lèi)似于boost::shared_ptr的人提供更簡(jiǎn)單的內(nèi)存管理方法。

我已經(jīng)開(kāi)始使用新的C++11特性,并且非常喜歡:新的auto關(guān)鍵字,對(duì)模板”>>“寫(xiě)法的支持,lambda表達(dá)式和新的函數(shù)定義語(yǔ)法。

C++11是如何開(kāi)發(fā)出來(lái)的?

C++11的出現(xiàn),首先要感謝C++標(biāo)準(zhǔn)委員會(huì)的辛勤工作,一群來(lái)自學(xué)術(shù)界和工業(yè)界的專(zhuān)家,他們的多次會(huì)晤攻克難題,終于設(shè)計(jì)出了一種跨平臺(tái),被多種編譯器支持,可以生成高效易維護(hù)代碼的語(yǔ)言。而C++11新標(biāo)準(zhǔn),就像對(duì)靈活強(qiáng)大的C++的一次不可思議的擴(kuò)展。

C++11包括什么?

更易用的語(yǔ)言

使用過(guò)C++11后,我發(fā)現(xiàn)它提供了大量的基礎(chǔ)方法使C++變成了一種更易使用的語(yǔ)言。這不是說(shuō)它變成了簡(jiǎn)單的語(yǔ)言—這里有大量的新特性—提供了大量的方法使編程更容易。讓我們看一個(gè)例子,auto關(guān)鍵字。在C++11中,假如編譯器可以從變量的初始化中得到它的類(lèi)型,那么你不必要指定類(lèi)型。比如,你可以這樣寫(xiě):

int x = 3;auto y = x;

編譯器可以推導(dǎo)出y的類(lèi)型是int。當(dāng)然,這不是一個(gè)證明auto有用的一個(gè)閃亮的例子。當(dāng)使用模板特別是STL時(shí)auto很好用。為什么這么說(shuō),想象使用一個(gè)迭代器(iterator):

map<string, string> address_book;address_book['Alex'] = 'webmaster@';//add a bunch of people to address_book

現(xiàn)在你想遍歷address_book中的元素,要這樣做,你需要一個(gè)迭代器:

map<string, string>::iterator iter = address_book.begin();

這是一個(gè)恐怖的長(zhǎng)類(lèi)型聲明,當(dāng)你已經(jīng)知道這個(gè)類(lèi)型的時(shí)候。這樣是不是簡(jiǎn)潔多了:

auto iter = address_book.begin();

代碼變得更簡(jiǎn)單明了,我覺(jué)得可讀性也更高了,因?yàn)槟0逭Z(yǔ)法使這一行其它內(nèi)容變模糊了。這是我特別喜歡的一個(gè)特性,我發(fā)現(xiàn)它消除了許多頭疼和難以追蹤的編譯錯(cuò)誤,節(jié)省了時(shí)間而沒(méi)有丟掉表達(dá)式的意思。

區(qū)間迭代(range-based for loop)

下面迭代器的例子是C++11提供的一種處理迭代的更好方法,有些人叫做區(qū)間迭代(基本上所有的現(xiàn)代語(yǔ)言都支持)。這個(gè)例子足夠證明這種語(yǔ)法是多么優(yōu)雅:

vector<int> vec;vec.push_back(10);vec.push_back(20);for (int &i: vec){ cout<<i;}

你需要做的就是給出一個(gè)變量和要迭代的區(qū)間。但是如果你想迭代一個(gè)map怎么辦?你怎么設(shè)置map中值的類(lèi)型?你知道vector值的類(lèi)型是int。但map的值類(lèi)型是pair,通過(guò).first和.second給你提供鍵和值。但是用auto,你根本無(wú)需關(guān)心確切類(lèi)型,你可以簡(jiǎn)單的寫(xiě)成:

for (auto address_entry: address_book){ cout<<address_entry.first<<' '<address_entry.second<<endl;}

這將打印出:

Alex webmaster@

這是一個(gè)不錯(cuò)的C++11新特性組合用法吧?

>>(right angle brackets)

我這里還有更易用的優(yōu)化—在以前的C++標(biāo)準(zhǔn)中,假如你寫(xiě)一個(gè)含有其他模板類(lèi)型的模板:

vector<vector<int> > vector_of_int_vectors;

你必須在結(jié)束的兩個(gè)’>‘之間添加空格。這不僅煩人,而且當(dāng)你寫(xiě)成>>而沒(méi)有空格時(shí),你將得到困惑和誤導(dǎo)的編譯錯(cuò)誤信息。產(chǎn)生這種行為的原因是C++詞法分析的最大匹配原則(maximal munch rule)。一個(gè)好消息是從今往后,你再也不用擔(dān)心了:

vector<vector<int>> vector_of_int_vectors;

對(duì),這確實(shí)是個(gè)小東西,不過(guò)卻是人工代碼克服機(jī)器工具的勝利。另外,這樣寫(xiě)就不那么丑了。

多線程

這是第一次,C++11將包含一種內(nèi)存模型和對(duì)應(yīng)的多線程庫(kù),這意味著你將可以編寫(xiě)符合標(biāo)準(zhǔn)的多線程代碼。新標(biāo)準(zhǔn)將提供所有的通用線程方法,比如線程、線程局部存儲(chǔ)和原子操作。它也提供了一系列有趣的特性:futures和promises。futures和promises的主要思想是,你可以編寫(xiě)代碼表示,“這個(gè)對(duì)象,一個(gè)future代碼還沒(méi)計(jì)算完的結(jié)果”,它將可以在后臺(tái)計(jì)算結(jié)果。當(dāng)這個(gè)值需要的時(shí)候,你向future發(fā)請(qǐng)求,假如這個(gè)值準(zhǔn)備好了,那就可以得到它,要不然繼續(xù)等待。

我將在后續(xù)的文章中深入探討多線程。

還有好多其他的東西

C++11特性的數(shù)量是客觀的。你可以閱讀維基百科里的C++11頁(yè)面,而我計(jì)劃在這一系列文章中深入探索這些特性,包括:

C++11的編譯器支持

當(dāng)然,如果無(wú)法使用再好的語(yǔ)言特性又有什么用,好消息是大量的編譯器已經(jīng)開(kāi)始支持C++11。Apache基金會(huì)整理了一個(gè)列表,列出了C++11的語(yǔ)言特性和編譯器的支持情況:支持C++11的編譯器。假如你對(duì)GCC感興趣,這里有GCC4.7支持C++11

有些編譯器,比如GCC,不會(huì)默認(rèn)支持這些新特性—例如,為了支持C++11特性,編譯時(shí)必須指定 -std=c++0x。當(dāng)然這也是很有用的,你可以在你的項(xiàng)目中選擇編譯器和語(yǔ)言集。

 

from:http:///blog/2013/08/01/what-is-cpp11/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(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)論公約

    類(lèi)似文章 更多

    日本午夜精品视频在线观看| 熟女少妇一区二区三区蜜桃| 大伊香蕉一区二区三区| 亚洲天堂久久精品成人| 久久99精品日韩人妻| 亚洲国产精品久久琪琪| 超薄丝袜足一区二区三区| 国产欧美日韩精品一区二| 隔壁的日本人妻中文字幕版 | 日系韩系还是欧美久久| 国产欧美日韩在线一区二区| 日韩欧美亚洲综合在线| 午夜精品福利视频观看| 欧美一级日韩中文字幕| 日本加勒比中文在线观看| 亚洲精品国产主播一区| 日韩国产亚洲欧美另类| 91在线国内在线中文字幕| 成年男女午夜久久久精品| 国产在线一区二区免费| 久久亚洲成熟女人毛片| 年轻女房东2中文字幕| 国产亚洲中文日韩欧美综合网 | 欧美日韩国产成人高潮| 日韩黄色一级片免费收看| 亚洲精品福利视频在线观看| 激情内射日本一区二区三区| 亚洲伦理中文字幕在线观看| 中文字日产幕码三区国产| 91天堂免费在线观看| 高清国产日韩欧美熟女| 欧洲亚洲精品自拍偷拍| 午夜精品久久久99热连载| 麻豆一区二区三区在线免费| 麻豆蜜桃星空传媒在线观看| 人妻亚洲一区二区三区| 不卡免费成人日韩精品| 亚洲国产91精品视频| 精品女同在线一区二区| 日本深夜福利视频在线| 亚洲女同一区二区另类|