成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從C++98到C++26,經(jīng)歷了什么?

原創(chuàng) 精選
開發(fā) 前端
C++標(biāo)準(zhǔn)遵循3年開發(fā)周期,并以發(fā)布年份命名。C++在臨發(fā)布的一年前會(huì)進(jìn)入“功能凍結(jié)期(feature freeze)”,即版本開發(fā)進(jìn)入半穩(wěn)定狀態(tài),不再添加重大功能及特性,著重于修復(fù)各種BUG。因此,直到2025年初,C++26都會(huì)增加新內(nèi)容。

整理 | 王瑞平

作為一名程序員,2023年最應(yīng)該關(guān)注的話題就是C++的標(biāo)準(zhǔn)更新。

C++標(biāo)準(zhǔn)遵循3年開發(fā)周期,并以發(fā)布年份命名。C++在臨發(fā)布的一年前會(huì)進(jìn)入“功能凍結(jié)期(feature freeze)”,即版本開發(fā)進(jìn)入半穩(wěn)定狀態(tài),不再添加重大功能及特性,著重于修復(fù)各種BUG。因此,直到2025年初,C++26都會(huì)增加新內(nèi)容。

上個(gè)月,C++26時(shí)間表發(fā)布,將會(huì)在“并發(fā)和并行性方面有重大改進(jìn)”。而已經(jīng)推出的C++ 23版本則沿襲了C++17的傳統(tǒng)特征,完善了現(xiàn)有特性。但是,與C++ 98、C++11或C++20相比,改變略小。

圖片圖片

為理解C++下一步的發(fā)展方向,我們將C++放進(jìn)歷史大背景中討論。

一、C++26時(shí)間表發(fā)布改進(jìn)并發(fā)和并行性

上個(gè)月,ISO C++委員會(huì)舉行會(huì)議,正式通過C++26時(shí)間表。當(dāng)時(shí),共有近180名成員參會(huì)。ISO C++標(biāo)準(zhǔn)委員會(huì)主席兼微軟本地語言架構(gòu)師Herb Sutter發(fā)文詳細(xì)介紹了有關(guān)C++26的最新進(jìn)展。

C++ 26首輪會(huì)議公告(圖源:Herb Sutter)C++ 26首輪會(huì)議公告(圖源:Herb Sutter)

Herb Sutter在文章中表示:并發(fā)和并行小組目前仍在按計(jì)劃推進(jìn)C++26的 std::execution和SIMD并行。該版本在“并發(fā)和并行性方面有重大改進(jìn)”,但是,Herb Sutter并沒有透露具體改進(jìn)內(nèi)容與可能的技術(shù)細(xì)節(jié)。

值得一提的是,在本次會(huì)議上,委員會(huì)采納首批共計(jì)40份變更文件,其中的變更都相當(dāng)小。

C++ 26時(shí)間表(圖源:Herb Sutter)C++ 26時(shí)間表(圖源:Herb Sutter)

據(jù)悉,與C++ 26相關(guān)的下兩輪會(huì)議將分別于11月及次年3月舉行,前者在美國夏威夷州科納舉行,由WorldQuant和Standard C++ Foundation主辦;后者在日本東京舉行,由Woven by Toyota主辦。

二、C++23標(biāo)準(zhǔn)

7月,C++23已完成更新,并進(jìn)入了最終投票階段。

C++23是由國際標(biāo)準(zhǔn)化組織(ISO)和國際電信聯(lián)盟(ITU)頒布的編程語言C++標(biāo)準(zhǔn)。它最初于2017年6月正式發(fā)布,是2001年的ISO/IEC 14882:2001(C++11)的下一個(gè)迭代。

C++23完整地實(shí)現(xiàn)了C++的表達(dá)力,并使其對(duì)計(jì)算機(jī)科學(xué)和軟件工程更有用。

它的主要特性包括:模板參數(shù)捕獲、可變參數(shù)模板等。同時(shí),它還引入了一些新的核心語言特性,如,UTF-8字符串字面量、更多的類型別名和using聲明等。

此外,C++23還引入了一些新特性,如,簡化的工作線程支持、原子操作、普通指針改進(jìn)、區(qū)域性和字符編碼以及可以按程度進(jìn)行編輯的新字符串操作。

最值得一提的是,C++23中引入了this推導(dǎo),使C++輕松實(shí)現(xiàn)復(fù)雜技術(shù)。你可以直接使用import std導(dǎo)入標(biāo)準(zhǔn)庫,或者在std::print和std::println中應(yīng)用C++20的格式字符串。

此外,在C++23中,開發(fā)者將獲得扁平化關(guān)聯(lián)容器。這些容器平衡了時(shí)間和空間復(fù)雜度。std::flap_map可取代std::map,而std::optional的接口將擴(kuò)展為單子接口。

三、從C++98到C++20

那么,C++標(biāo)準(zhǔn)經(jīng)歷了哪些歷史變革呢?

圖片

1.C++98

20世紀(jì)80年代末,Bjarne Stroustrup和Margaret A. Ellis撰寫了著名的《注釋C++參考手冊(cè)》(簡稱ARM)。

當(dāng)時(shí),ARM根據(jù)獨(dú)立的C++實(shí)現(xiàn)定義了C++的功能;并且,ARM為第一個(gè)C++標(biāo)準(zhǔn)——C++98(ISO/IEC 14882)奠定了基礎(chǔ)。

值得一提的是,C++98包括:模板、包含容器和算法的標(biāo)準(zhǔn)模板庫(STL)、字符串和IO流。

2.C++ 03

在C++ 03(14882:2003)中,修正了一些微小的技術(shù),但在社區(qū)中仍被稱為傳統(tǒng)C++。

3.TR1

2005年,令人興奮的事發(fā)生了。Technical Report 1(簡稱TR1)推出,是由C++標(biāo)準(zhǔn)化委員會(huì)成員建立的boost項(xiàng)目,推動(dòng)現(xiàn)代C++向前邁出一大步,也為后續(xù)C++11的出現(xiàn)奠定了基礎(chǔ)。

具體來講,TR1有13個(gè)庫。這些庫也成為了下個(gè)C++版本的一部分,分別對(duì)應(yīng)到正則表達(dá)式庫、隨機(jī)數(shù)庫、智能指針(如,std::shared_ptr)和哈希表。

4.C++11

C++11被稱為現(xiàn)代C++,它的許多特性從根本上改變了C++的編程方式。例如,C++11引入了TR1組件,還有移動(dòng)語義、完美轉(zhuǎn)發(fā)、可變模板或constexpr等特性。

但是,這些并不是全部。隨著C++11的到來,我們還獲得了內(nèi)存模型作為基礎(chǔ)的線程模型以及線程API。

5.C++14

C++14是一個(gè)小型C++標(biāo)準(zhǔn),引入了讀寫鎖、泛化lambda和泛化constexpr函數(shù)。

實(shí)際上,C++14相對(duì)之前的11并沒有太大改動(dòng),或者說更像C++11標(biāo)準(zhǔn)基礎(chǔ)上的查漏補(bǔ)缺。C++14之后,還有17、20、23,所以,C++14更像個(gè)過渡版本。

6.C++17

C++ 17有兩個(gè)突出的特性:并行的STL和標(biāo)準(zhǔn)化的文件系統(tǒng)。大約80個(gè)STL算法可使用執(zhí)行策略執(zhí)行。

這意味著,調(diào)用std::sort可以在C++中實(shí)現(xiàn)對(duì)容器vec并行排序的提示。此外,你還可以按順序進(jìn)行指定排序或向量化。

就像C++11一樣,boost對(duì)C++17也產(chǎn)生了重大的影響,從boost中獲得了文件系統(tǒng)以及3種新的數(shù)據(jù)類型:std::optional、std::variant和std::any。

7.C++20

C++ 20的革新從根本上改變了編寫C++的方式,程度不亞于C++11,特別是以下四個(gè)重要特性:Ranges(范圍庫),Coroutines(協(xié)程),Concepts(概念)以及 Modules(模塊)。

·新的Ranges庫能夠直接在容器上表達(dá)算法、使用管道符組合算法,并將它們應(yīng)用于無限數(shù)據(jù)流。

·Coroutines使異步編程在C++中成為主流。Coroutines是協(xié)作任務(wù)、事件循環(huán)、無限數(shù)據(jù)流或管道的基礎(chǔ)。

·Concepts將改變我們對(duì)模板的思考和編程方式,是有效模板參數(shù)的語義類別。Concepts讓你能夠直接在類型系統(tǒng)中表達(dá)你的意圖。如果出了什么問題,你會(huì)收到簡潔的錯(cuò)誤信息。

·Modules將克服頭文件的限制,也帶來了諸多好處。例如,不再需要預(yù)處理器。最終,我們還將擁有更快的構(gòu)建時(shí)間和更簡單的包構(gòu)建方式。

四、C++的下一步神奇遞歸模板模式

C++的設(shè)計(jì)模式大致可分為三類:創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式。

而神奇遞歸模板模式(CRTP)也是C++的設(shè)計(jì)模式,精巧地結(jié)合了繼承和模板編程技術(shù),可用來為C++的class提供額外的功能、實(shí)現(xiàn)靜態(tài)、多態(tài)等。

總之,CRTP實(shí)現(xiàn)了靜態(tài)多態(tài),將會(huì)成為接下來C++的重要設(shè)計(jì)模式。

參考資料:

http://modernescpp.com/index.php/c-23-deducing-this

http://modernescpp.com/index.php/c-23-the-next-c-standard

http://app.myzaker.com/news/article.php?pk=64b0fc568e9f0911572638ac

責(zé)任編輯:王瑞平 來源: 51CTO技術(shù)棧
相關(guān)推薦

2021-11-07 14:30:59

C++Switch語句

2010-06-02 09:14:53

GCC編譯器Linux

2017-11-14 16:38:05

智慧新城

2020-04-15 09:35:59

Flutter圖片優(yōu)化

2011-07-13 17:08:02

CC++

2011-07-13 16:48:55

CC++

2011-07-13 17:42:32

CC++

2017-12-04 09:26:56

架構(gòu)師碼農(nóng)菜鳥

2020-03-18 08:56:27

頁面網(wǎng)址內(nèi)容

2015-06-25 11:21:33

C++Objective-C

2021-12-06 23:00:36

CC++編程語言

2018-09-14 14:20:43

人肉智能運(yùn)維

2010-11-08 10:20:18

2017-08-03 08:34:54

gRPCCRust

2023-10-30 23:14:57

瀏覽器URL網(wǎng)頁

2011-11-14 09:56:17

C++

2009-08-27 16:03:31

從c#到c++

2011-06-15 15:29:25

Qt C++

2023-01-04 11:04:32

2014-07-01 09:22:01

SwiftObjective-CiOS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 五月激情综合网 | 国产精品日韩一区 | 色婷婷综合久久久中文字幕 | 欧美日韩电影一区 | 成人影视网 | 日本不卡免费新一二三区 | 精品久久香蕉国产线看观看亚洲 | 欧美6一10sex性hd| 成人综合一区 | 欧美亚洲国产一区二区三区 | 日韩色在线| 色黄爽 | 欧美一级欧美一级在线播放 | 精品99爱视频在线观看 | 91免费在线看 | 欧美一级毛片久久99精品蜜桃 | 欧美激情久久久久久 | 日韩中文av在线 | 久久一区二区三区四区五区 | 99久久久国产精品免费消防器 | 亚洲激情一级片 | 日韩精品一区二区三区中文在线 | 欧美一区二区三区在线观看 | 欧美黄色片 | 精品美女视频在线观看免费软件 | 成人精品在线视频 | 久热电影 | 北条麻妃国产九九九精品小说 | 日本一区二区三区精品视频 | 亚洲国产精品va在线看黑人 | 先锋资源在线 | 狠狠干天天干 | 九色视频网站 | 久久精品国产亚洲 | 中文字幕视频一区 | 午夜免费福利电影 | 久久久夜 | 涩涩视频网 | 日韩黄 | 国产不卡在线播放 | 黑人巨大精品欧美一区二区免费 |