C++ 過去的這一年

2020-12-11 CSDN

本文旨在讓我們回顧 C++ 2019年裡的變化和發展!我們將重點關注本年度裡 C++ 上發生的重大事件,標準的發展,工具的變化等等……

作者 | Bartek

譯者 | 蘇本如,責編 | 屠敏

以下為譯文:

免責聲明:本文提出的觀點僅代表個人立場,並不代表整個ISO C++標準委員會的意見。

簡介

以下是本年度最讓我關注的三大方面:

C++ 20即將發布。開發工具。C++在開發者中的穩定位置。請繼續閱讀以獲得對以上三大方面的全面了解。

重大事件時間表

下表按日期順序列出了本年度C++發生的重大事件:

對C++11/14的編譯器支持

為了保持完整性,筆者在這裡先提醒一下:Clang(從版本3.4開始),GCC(從版本5開始)和Intel C++ Compiler(從版本15開始)已經完全支持C++ 11/14。

Visual Studio團隊宣布Visual Studio 2017 15.7版完全支持C++ 17,這也意味著它對C++ 11/14的支持。現在,你可以構建複雜的代碼庫,如boost::hana或range v3。

既然C++ 11/14在所有主流編譯器中都得到了支持,那麼就不存在任何理由不使用現代C++了。

對C++ 17的編譯器支持

C++17作為ISO/IEC 14882標準:2017 程式語言–C++發布於2019年12月。

你可以在這裡下載一個免費的官方文檔的最終版:N4700, 2017-10-16, PDF。

支持C++的編譯器的一份完整列表可以參考這裡:C++17 編譯器支持。

你也可以閱讀我的博客文章:C++17特性(https://www.bfilipek.com/2017/01/cpp17features.html)。

關於C++17的語言特性:

從Clang版本5.0、 GCC版本8.0、 Visual Studio版本15.7和Intel C++ Compiler版本19.0.1開始,所有編譯器都支持C++17的語言特性。

標準庫上還有更多的工作需要完成,特別是針對並行算法和文件系統等重要問題的工作。

對於std :: filesystem的支持,你需要GCC版本8.1(或者支持更好的版本9.1)、Clang版本3.9(或者支持更好的版本7.0)和Visual Studio 2017版本15.7。

並行算法的更新最早在Visual Studio 2017 15.7中提供,但是隨著之後的更新,MSVC團隊又添加了更多算法。

接下來可以使用的是Intel PSTL實現,它也被添加到GCC版本9.1中。你需要Intel線程構建塊(TBB - Threading Building Block) 作為後端實現(欲知詳情,請參考下面這篇文章):

在Linux和macOS上使用GCC 9.1和Intel TBB實現C++ 17 STL並行算法(作者:Paul Silisteanu) :https://solarianprogrammer.com/2019/05/09/cpp-17-stl-parallel-algorithms-gcc-intel-tbb-linux-macos/

而Clang庫對並行算法的支持還需要繼續等待。

另一個問題是低層轉換函數的實現。

Visual Studio從版本15.7開始支持在from_chars() / to_chars()函數中支持整形參數,在版本15.8中又添加了對from_chars()的浮點支持。但是完全一致的支持直到版本16.4(對to_chars()的浮點支持)才開始可用。

到目前為止Clang和GCC版本只支持整數。原因可能是MSVC STL(標準模板庫)的實現是開源的,我們可以預期一些代碼將被移植到其他標準庫實現中。

C++20

關於C++20的討論今年佔據了主導地位。在德國科隆舉行的夏季ISO C++標準會議後,C++20的特性已經凍結。在稍晚時間舉行的貝爾法斯特C++標準會議上,第一批國家機構的一些意見得到了解決。

總之,這意味著我們明年發布新的C++標準的道路會一馬平川!

下面列出C++20的主要特性:

模塊(Modules)協程(Coroutines)標準庫開箱即用的概念(Concepts)範圍(Ranges)constexpr支持:new/ delete,dynamic_cast,try/catch,虛擬constexpr 向量和字符串計時(Chrono):日曆、時區支持std::format – 詳見此處C++20中的std::formatstd::spanstd::jthread更重要的是,很多C++ 20的特性在流行的編譯器中已經實現了。像模塊(Modules)支持這種最重要的工作仍然沒有完成(我們只是完成了一些實驗性的Module-TS實現)。

像以往一樣,完整的編譯器支持列表可以在cppreference網站:C++20編譯器支持頁面(https://en.cppreference.com/w/cpp/compiler_support#cpp2a)上找到。但是我想在這裡列舉幾個:

ISO C++標準會議

今年共計舉行了三次C++標準委員會會議,分別在夏威夷的科納、德國的科隆和北愛爾蘭的貝爾法斯特舉行。似乎今年的委員會更願意留在歐洲。

這裡可以找到所有的會議計劃,包括:即將舉行的會議和已經結束的會議(https://isocpp.org/std/meetings-and-participation/upcoming-meetings)。

下一次會議將於2020年2月在布拉格舉行。

二月: 夏威夷科納會議

在這次會議上,下列C++新特性投票後被批准納入了C++20標準:

模塊 - P1103!協程 - N4736!將結構化綁定擴展為更像變量申明 - P1091R3std::polymorphic_allocator<> - P0339std::midpoint和std::lerp - P0811std::execution::unseq執行策略 - P1001std::ssize 返回有符號數的自由函數 - P1227查找時預先計算hash值 - P0920並行化TS 第二版也被作為以下標準發布:

ISO/IEC TS 19570:2018程式語言 - 用於並行化的C++擴展技術規範(https://www.iso.org/standard/70588.html)。

這次會議的主要會議報告摘要可以從如下兩個連結找到:

r/cpp: 2019-02 科納ISO C++標準委員會會議報告(https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/)和科納會議後的郵件列表(https://isocpp.org/blog/2019/03/2019-03-post-kona-mailing-available)。

其他版本的會議報告連結如下:

Herb Sutter – 會議報告:冬季ISO C++ 標準會議(科納)Botond Ballo - 會議報告: 2019年2月科納C++標準會議cor3ntin – 科納會議報告Timur Dumler – 會議報告:2019年2月夏威夷科納ISO C++標準委員會會議七月: 德國科隆會議

這次會議是C++20標準的特性凍結會議。這是最後一次投票的機會。

另外,有一個主要的特性在這次會議上從草案中淘汰了。雖然Contracts(合約)很有吸引力,但實際上,委員會未能就最後的實施要點達成一致。因此,最後的決定是最好成立一個獨立的研究小組,嘗試在C++ 23中納入這一特性。

這次會議批准的一些重要特性和變化如下:

合約(Contracts)從C++20中移除,Contracts研究小組成立。文本格式化支持:std::format("For C++{}", 20) - P0645C++20同步庫 - P1135constexpr 內存分配 - P0784constexpr std::vector - P1004constexpr std::string - P0980線程可中斷 join 支持(Stop Token) - P0660source_location - P1208using enum - P1099constinit關鍵字 - P1143數學常量 (std::numbers::pi和 friends) - P0631將概念(Concepts)的命名方式從PascalCase(駝峰式命名法)改為snake_case(蛇形命名法) - P1754廢棄volatile關鍵字 - P1152布局兼容性和指針互易性特徵 - P0466構造函數的nodiscard 屬性 - P1771改進的iterator concept hierarchy - P1207Move-only視圖 - P1456附加視圖和range適配器 - P1035運算符<=>加入標準庫 - P1614類模板參數推導的擴展 - P1021這次會議的主要議程報告摘要可以在下面兩個地方找到:

r/cpp thread - cologne meeting(https://www.reddit.com/r/cpp/comments/cfk9de/201907_cologne_iso_c_committee_trip_report_the/)post Cologne mailing(https://isocpp.org/blog/2019/08/2019-08-post-cologne-mailing-available)會議報告:

Herb Sutter – 會議報告:夏季ISO C++ 標準會議(科隆)Timur Dumler – 會議報告: 2019年7月德國科隆C++委員會會議, Botond Ballo – 會議報告: 2019年7月德國科隆C++ 標準會議Silexica – 會議報告: 2019年度德國科隆ISO C++會議Guy Davidson – 德國之行:科隆會議報告十一月,北愛爾蘭貝爾法斯特會議:

這一次,委員會不再投票任何新的特性,他們的大部分時間花在解決國家機構針對C++ 20草案提出的意見。

主要的會議報告發布在r/cpp網站上,會後的郵件列表地址為: https://isocpp.org/blog/2019/12/2019-11-post-belfast-mailing-available

其他的會議報告有:

Herb Sutter - 會議報告:秋季ISO C++ 標準會議(貝爾法斯特)Botond Ballo - 會議報告:2019年11月貝爾法斯特C++標準會議Ben Craig 會議報告:貝爾法斯特的獨立錯誤Guy Davidson - 在我家後院召開的WG21會議: 貝爾法斯特會議報告

編譯器最新版本及說明

下面列出編譯器的最新版本和最引入注目的更新。

Visual Studio

最新版本是Visual Studio 2019版本16.4,最後一次更新發生在12月3日。

– 版本說明:https://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes

今年推出了新版Visual Studio 2019!它為已經非常出色的集成開發環境(IDE)帶來了許多新的特性和增強功能。

這裡是最初發布時的博客文章:

Visual Studio 2019: Code faster. Work smarter. Create the future. | Visual Studio Blog(https://devblogs.microsoft.com/visualstudio/visual-studio-2019-code-faster-work-smarter-create-the-future/)。

一些重要的特性:

基於Visual Studio IntelliCode的人工智慧輔助代碼補全。在C++ MSBuild和CMake項目中對 Clang 和 MSVC 的 Clang-Tidy 的支持。AddressSanitizer支持 Windows 上使用 MSVC 編譯的項目和CMake更好的集成。概念(Concepts)在版本16.3 中可用對to_chars()的全面支持, 完善了C++17中的要求。提供了一個名為C++ Build Insights的新工具集。欲知詳情,請參閱C++團隊博客。另一個主要的更新來自Cppcon大會,MSVC團隊在會上宣布將他們的標準模板庫實現開源!詳情請參見:

MSVC宣布開源其標準模板庫實現 | C++ 團隊博客(https://devblogs.microsoft.com/cppblog/open-sourcing-msvcs-stl/)

一些其他新聞:

AddressSanitizer (ASan)在 Windows上支持MSVC | C++ 團隊博客在Visual Studio中使用clang-tidy進行代碼分析 | C++ 團隊博客Visual Studio 2019版本16.3開始支持C+20 Concepts特性 | C++團隊博客這裡有一個關於C++標準(包括C++20)的一致性的文檔:

Microsoft C++語言一致性清單(https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=vs-2019)。

GCC

最新的穩定版本9.2,發布於8月12日,詳情請參見:GCC9發布系列更新(https://www.gnu.org/software/gcc/gcc-9/)。

GCC對當前C++特性的支持(https://gcc.gnu.org/projects/cxx-status.html)Libstdc++ 狀態(https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)Clang

最新的穩定版本9.0,發布於2019年9月19日。詳情請參見:版本發布說明

Clang對當前C++特性的支持(https://gcc.gnu.org/projects/cxx-status.html)libc++ C++1z 狀態(https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html)Intel Compiler

最新版本19.1,發布於2019年4月2日。詳情請參見:版本發布說明(https://software.intel.com/en-us/articles/intel-cpp-compiler-release-notes)

Intel C++ Compiler對C++14特性的支持(https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler)Intel C++ Compiler對C++17特性的支持(https://software.intel.com/en-us/articles/c17-features-supported-by-intel-c-compiler)C++ Builder

最新版本為Rio 10.3 更新3,於2019年11月21日發布,詳見版本發布說明。

集成開發環境(IDE)- Embarcadero C++ Builder使用了一個經過修改的Clang編譯器(版本5.5)和一個Dinkumware標準模板庫(STL)實現,它可以與Win32和Win64應用程式一起工作。這是一個功能全面的IDE,用於從單一C++代碼庫構建iOS、安卓、Windows和macOS應用程式。

一些相關新聞:

版本10.3.2新增功能:用於64位Windows環境的C++17 -- 實現在所有Windows環境下使用C++17 Clang編譯器。新的Delphi和C++Builder RAD伺服器課程,已在Embarcadero學院、 Embarcadero博客站點、開發者工具和IDERA社區提供RAD Studio 10.3新增功能: C++17的異步代碼補全,以及其他功能這裡是一份C++特性的一致性清單:編譯器對現代C++語言特性的支持(http://docwiki.embarcadero.com/RADStudio/Rio/en/Modern_C%2B%2B_Language_Features_Compliance_Status)

各種工具

當編譯器幫助C++代碼完成了主要任務時,我們也不能忘記其他工具的重要性。

以下是一些重要的工具,值得了解一下:

Clang 工具:

Clang/LLVM 提供了許多強大的實用程序,例如:

Clang TidyClang-Include-FixerAddressSanitizerMemorySanitizer對於Visual Studio,你可以使用Clang Power Tools,它是Visual Studio的一個擴展.它由Victor Ciura開發 (@ciura_victor)。最新版本 5.5於2019年12月18日發布. 詳見版本變更日誌。它同時還有一個付費版本。集成開發環境

Visual Assist – 最新版本發布於2019年11月11日。詳見:

Tomato Soup博客文章 | Visual Assist 版本2353已經可用(https://blog.wholetomato.com/2019/11/11/visual-assist-build-2353-is-available/)。ReSharper C++ - 最新版本為2019.3, 詳見:

ReSharper C++博客文章 | ReSharper C++ 版本2019.3: 支持C++20概念,類型提示, #includes排序, 和其他特性(https://blog.jetbrains.com/rscpp/resharper-cpp-2019-3/)。CLion - 最新版本為2019.3, 詳見:

CLion博客文章 | CLion 2019.3:一個專注於性能和一些期待已久的增強功能的高質量發布(https://blog.jetbrains.com/clion/2019/11/clion-2019-3-release/)。Cevelop版本1.13.0 發布(https://www.cevelop.com/2019/10/23/cevelop-1.13.0-release.html)。

為了更好地理解代碼,你還可以使用SourceTrail。它最近作為完全免費版本發布!詳見:

SourceTrail開發者博客 | SourceTrail現在已是免費的開源軟體。

代碼分析器:

CppDepend 版本2019.3:

CppDepend – 2019.3版本的新功能(https://www.cppdepend.com/cppdependv2019)!今年,該團隊增加了對如下工作的支持:MISRA編碼準則、VS 2019、QT項目、UI簡化和嵌入式項目。PVS-Studio:這是一個使用C、C++和C#編寫的,用於在程序原始碼中進行錯誤檢測的工具。在Windows和Linux環境下都能夠工作。

最新版本是PVS-Studio 版本7.05,請參閱今年的所有發布說明(https://www.viva64.com/en/m/0010/)。今年的一些顯著改進包括:.NET Core 3和3.1項目分析、MISRA編碼準則支持、40多項新檢查、對Java和SonarQube插件的支持。包管理器:

Conan– 版本1.21已經可用。Microsoft/vcpkg: VC++打包工具– 一個適用於Windows、Linux和MacOS環境的開源C++庫管理器。

C++相關會議

我們沒有理由抱怨C++會議的缺乏。實際上今年有很多會議機會,尤其是在春季和秋季,下面是幾個會議的例子:

CppCon – 2019年9月舉行C++Now – 2019年5月舉行Meeting C++ - 2019年11月舉行ACCU – 春季會議在2019年4月舉行,秋季會議在11月舉行還有很多其他的會議,如:Code::Dive、C++義大利大會、C++ on Sea、C++ 義大利日、C++俄羅斯大會、核心C++ 2019大會、等等。

如果你沒有參加過任何一個會議,你可以在YouTube上快速輸入它的名字,就會從中找到大部分演講的視頻,這很令人驚訝。你也可以使用一些網絡搜尋引擎很容易地找到相關會議報告。

以防萬一,這裡是ISO C++ 網站上的全球註冊會議的連結:C++全球會議和 FAQ(https://isocpp.org/wiki/faq/conferences-worldwide/)。

社區和用戶組

用戶組提供給你遇見其他C++程式設計師,分享你的經驗和學習新事物的機會。我強烈建議你定期訪問這些用戶組,或者至少偶爾訪問一次。

我很高興,我所在的城市(Cracow)的用戶組C++ Krakow用戶組(https://www.meetup.com/C-User-Group-Cracow):今年將繼續存在,如果你住在附近的話可以加入!

如果你在查看完這個全球用戶組列表後確認你附近沒有C++用戶組。你還可以加入如下用戶組:

C++ Slack頻道: https://cpplang.now.sh/#include C++(https://www.includecpp.org/)C++ Poland

此外,今年我們還在波蘭推出了C++博客:C++ Polska。我們有幾個活躍的作者每個月都會在那裡分享很棒的內容!

同時我們也啟動開始了一個Slack頻道,在那裡你可以討論任何C++和非C++的東西:加入這裡:C++ Polska Slack(https://bit.ly/cpppolskaslack)

書籍和課程

今年的一些發行的書籍和發布的課程值得一看:

有一個驚喜是John Lakos的書!我等了好幾年,終於有貨了!

下面是一些流行的C++自出版書籍的列印版本:

受歡迎程度

C++在哪些領域受歡迎?它的份額都被JavaScript蠶食了嗎?

顯然不是,因為在某些領域C++已經成長或保持在一個穩定的位置。

讓我們看看一些圖表/統計數據:

TIOBE 程式語言排行榜中,C++排名第4。它的佔比現在為6.196%,去年超過了7%,兩年前大約5.5%。詳情請參見Tiobe Index。在 StackOverflow 調查中,C++排名第9,超過了C,但是低於Java,C#,當然也低於Javascript,而它在上一年排名第10。詳見:2019 Stack Overflow開發者調查(https://insights.stackoverflow.com/survey/2019#technology)在GitHub調查中,C++排名從去年的第5下降到今年的第6。詳見:2019 Octoverse 統計報告(https://octoverse.github.com/#top-languages)我個人覺得,C++仍然很強大。也許它並不完美,也不容易學習,但是很多代碼仍然是用這種語言構建的。Rust或其他系統語言不會很快取代它。它的工具越來越好,而這個語言正在致力於降低它的複雜性,所以初學者的體驗希望是越來越好。

然而,C++只是工具的一種,我們很感激今天我們有很多工具可以使用。

我還找到了Daniel Lemire最近發表的一篇文章,十年前他對程序開發和程式語言做了一些預測。他對C++的增長感到驚訝。

讓我們看看Daniel Lemire的評價:

我認為從2010開始,C++已經成為一種更好的語言。這並不容易,但已經超出了我的預期。

問卷調查

一個多星期前,我做了一個快速的問卷調查,希望得到一些關於C++使用的數據。我收到了574個回復!感謝大家!

C++ 標準的使用

在日常工作中,你使用哪個C++標準?

(註:以上百分比的總和不是100%)。

在這份調查中,我沒有明確「使用」的準確含義,所以它既可以指生產環境的編碼,也可以指業餘項目的編碼。比如,我看到C++20的使用率很高,但我相信它主要用於測試,還沒有用於完整的生產環境,或者,也許我錯了?

C++17的使用經驗

你對C++ 17的使用有什麼經驗?

我們可以看到,今年C++17標準的採用率在穩步增長。

C++20的使用經驗

你對C++20的使用有什麼經驗?

編譯器的使用

你使用什麼編譯器?

(註:以上百分比的總和不是100%)。

你還用哪些其他的開發工具?

(註:以上百分比的總和不是100%)。

去年我沒有問這個問題。

我認為這個問題中的「debuggers」不是個好選項,因為我們可以假設所有的開發人員在某個時候都會使用它。

當然還有一些「其他」的答案,包括:ccache、meson、make、Boost build、QMake、Autotools、cmake format、Emacs、Whole Tomato。

你認為2019年發生的最好的事情是什麼?

這是一個開放性的問題,根據我收集到的回答,主要有以下幾件大事(以下列表基於答案中出現的順序,沒有特殊的排序):

CppCon 2019大會C++20 新特性和標準化C++20中的模塊(Modules)特性協程(Coroutines)概念(Concepts)範圍(Ranges)std::formatCode::Dive 2019大會Meeting C++ 2019大會C++博客 - 幫助更容易學習和掌握最新的語言C++ 書籍和課程 – 提升水平,更多的選擇機會C++ CastC++ 社區 – 大會,用戶組越來越好用的工具:Clang build analyser, VS 2019, QTCreator, CLion有些人還列出了一些個人成就:例如,開始使用C++17,在大會上的第一次演講。有人提到在項目中引入Conan,有人換了工作。還有人反饋說「終於退休了」。這些對所有人都有益處!

我也很高興看到有人說「最好的是我的書」。謝謝:)

給個對這個問題的回答例子:

「最好的事情是了解了C++17的細節」, 當然,這個免費版本堅定了我在項目中使用它的想法。

其他問卷調查

C++標準委員會在今年的二月份也發出了一份問卷調查。他們設法獲得了2000多份回復。

這份問卷調查表和結果可以在這裡找到:第二次C++基金會年度開發者問卷調查:標準C++ (https://www.jetbrains.com/lp/devecosystem-2019/cpp/)

調查結果.

還有一項來自Jetbrains的調查:C++ 2019 - 2019信息圖表中開發者生態系統狀態調查(https://www.jetbrains.com/lp/devecosystem-2019/cpp/)

總結

本年度我想強調的就以下三件事情:

C++ 20即將發布。開發工具 – 讓編寫C++代碼更加容易!C++在開發者中的穩定位置總而言之,我認為在未來的十年,我們可以以一種積極樂觀的態度看待C++。雖然我們無法預知更遠的將來會發生什麼,但是至少在接下來的十年裡,我相信C++應該是穩定的。有了所有這些工具的幫助,新的C++標準編寫的C++代碼會更加容易訪問,並且更加不容易出錯。在可預見的將來,C++仍然是追求性能的應用程式的無二選擇,甚至它會取代C和Fortran。

原文:https://www.bfilipek.com/2019/12/cpp-status-2019.html

本文為 CSDN 翻譯,轉載請註明來源出處。

相關焦點

  • c++11新特性,所有知識點都在這了!
    c++11新特性吧,你是怎麼回答的呢?這裡的詳細介紹請看:左值引用、右值引用、移動語義、完美轉發,你知道的不知道的都在這裡列表初始化在C++11中可以直接在變量名後面加上初始化列表來進行對象的初始化,詳細介紹一定要看這篇文章:學會C++11列表初始化std::function &
  • C++、java 和 C 的區別
    一、基礎類型c++:** java:** C#:1.以java為準,c++裡面的int short long 像這樣的整型 一般都有unsigned 和signed的區分 ,這個跟java和c# 的區別比較大,但c#裡面有unit ulong ushort 這三種就相當於c++的修飾詞unsigned,當c++李明的變量類型定義unsigned,就默認是整數。
  • c++的輸入與輸出
    c++輸入與輸出C++ 標準庫提供了一組豐富的輸入/輸出功能,本章將討論 C++ 編程中最基本和最常見的 I/O 操作。輸入輸出並不是c++語言的正式組成成分,c和c++沒有為輸入輸出提供專門的結構。在c語言中輸入輸出是通過調用scanf和printf 實現的,在c++中是通過調用流對象cin和cout實現的。
  • 跟我學C++中級篇——STL的學習
    一、c++標準庫C++的標準庫主要包含兩大類,首先是包含C的標準庫的,當然,為了適應c++對一些C庫進行了少許的修改和增加。最重要的當然是面向對象的c++庫;而c++庫又可以分成兩大類,即面向對象的c++庫和標準模板庫,也就是題目中的STL。
  • 「c++」「高等數學」...這所高校的借書榜太硬核了
    「c++」「高等數學」...這所高校的借書榜太硬核了 2020-01-21 06:30 來源:澎湃新聞·澎湃號·政務
  • 九大程式語言優缺點第四期:c++
    上一期給大家介紹了C語言,理所應當的本期給大家了解下C語言的超集,c++那麼接下來給大家介紹主流程式語言:C++、JavaScript、C#、Ruby、PHP以及Objective-C,對於這幾種語言,大家都能看到由其打造的頂尖應用,我們一起來了解一下吧。
  • 那些容易犯錯的c++保留字
    本文首發 | 公眾號:lunvey目前正在學習vc++6.0開發,而這裡面使用的是c++98標準。
  • C++ 優先隊列priority_queue
    這三個參數的含義分別為:數據類型,容器類型和比較函數,實際上優先隊列就是維護了一個裝有 T 類型元素的容器 Container,並在入隊和出隊時對容器內元素使用 Compare 比較函數進行了排序。這3個參數還要滿足一定的要求,並且在使用過程中有些注意事項:1.
  • 學習c++筆記——標準輸出流cout
    前和往常一樣,一邊喝早茶,一邊上網和女粉絲侃大山,在手機和平板電腦上整理修改《html5》、《javascript》、《css3》、《c語言》等多年前寫的教程(c++
  • C++機器學習庫介紹
    這是很多新來者都會遇到的問題。庫在機器學習中的重要性是什麼?讓我試著在這一節解釋一下。比如說,經驗豐富的專業人士和行業老手已經付出了艱辛的努力,並想出了解決問題的辦法。你更願意使用它,還是願意花幾個小時從頭開始重新創建相同的東西?後一種方法通常沒有什麼意義,尤其是當你在DDL前的工作或學習。
  • C 語言會比 C++ 快?
    然而這麼多年過去了,C++ 卻一直未能取代 C,且在本文中,作者發現自己常用的庫,可以使用到的 C++ 特性越來越少,進而準備向 C 語言過渡。+98c++11c++14c++17gcc這絕對是 libstdc++ 和 libc++ 未來可以改進的領域。我認為對使用 C 的頭文件的而言,承擔 C++ 的包帶來的成本是不合理的。除了 math.h 問題之外,假設在編譯時間中 C 語言的代碼有意識的用到了 C++ 的子集,這樣的結果看起來 C 語言版本的代碼的編譯時間並不比 C++ 版本的快,所以這種情況的時候切換到 C 語言也不能保證 meshoptimizer 會更快。
  • python+C、C++混合編程的應用
    有的語言專注於簡單高效,比如python,內建的list,dict結構比c/c++易用太多,但同樣為了安全、易用,語言也犧牲了部分性能。在有些領域,比如通信,性能很關鍵,但並不意味這個領域的coder只能苦苦掙扎於c/c++的陷阱中,比如可以使用多種語言混合編程。
  • c++ fstream + string 處理大數據
    (4)上面兩點算是自己的誤解吧,因為c++裡面也有也有與之對應的fstream類,c++map容器類,詳見c++ map簡介(5)c++裡面也有相對比較成熟的string類,裡面的函數也大部分很靈活,沒有的也可以很容易的實現split,strim等,詳見c++string實現(6)最近從網上,看到了一句很經典的話,c++的風fstream類 + string
  • C++卡牌小遊戲
    以前上學的時候業餘學了點c++ ,也僅僅用來做過一個控制臺版的「學生管理系統」,現在工作接觸最多的還是C語言,c++那各種屌炸天的語法和
  • scratch/python/c++,小孩學編程學哪個好?
    傳統編程建議學習c++或者python。如果目標就是奧賽,那建議學c++。c++是奧賽元老,而且會一直坐鎮下去,笑看其他語言上來又下去。關注本號也可以學習零基礎C++教程。c++效率高,資源佔用少,可以編寫底層的操作。比如windows系統等等。也有學習c++的同學自己鼓搗出一個作業系統。
  • C 2 C++進階篇(1)
    之前一直是對於面向過程的編程,python有過那種對象風格的編程,但是對於oop的實際開發還停留在表面,沒有獨立的開發c++經驗,也有好幾年沒有碰過c了。由於接手Qt的相關項目,所以對c to c++的進階希望能進行個自我總結。
  • C/C++優勢究竟在哪裡?是什麼讓他們經久不衰?看看這個你就懂了
    相較於C語言,c++誕生於1983年,緊隨c語言的步伐,c++是C語言的超集,大家所知道的C語言是面向過程的,java是面向對象的,那麼C語言為了面向對象,所以誕生出現在大家所熟知的c++,被廣泛視為大規模應用構建軟體。
  • C++隨機排序容器中的元素
    作者:apocelipes連結:https://www.cnblogs.com/apocelipes/p/10351335.html在各種程序語言中都提供了將容器元素隨機排序的shuffle方法,c++
  • c++之重載函數學習總結
    int a, int b){   return(a+b);}int func(const char* s){    return strlen(s);}int main(){   return 0;}上面在c++
  • c++ fstream + string處理大數據
    (4)上面兩點算是自己的誤解吧,因為c++裡面也有也有與之對應的fstream類,c++map容器類,詳見c++map簡介(5)c++裡面也有相對比較成熟的string類,裡面的函數也大部分很靈活,沒有的也可以很容易的實現split,strim等,詳見c++string實現(6)最近從網上,看到了一句很經典的話,c++的風fstream類+string