C++ 程式語言的歷史可以追溯到1979 年,當時Bjarne Stroustrup 為博士學位論文進行了一些開發。在Stroustrup 可以使用的所有語言中,有一種被稱為Simula 的語言,顧名思義,它可能是一種主要為模擬而設計的語言。 Simula 67 語言是Stroustrup 使用的變體,被認為是支援物件導向程式設計範例的主要語言。 Stroustrup 發現這個範例對包裝開發很有幫助。但是,Simula 語言對於實踐和實際使用而言太慢了。 隨後不久,Bjarne Stroustrup 希望透過支援物件導向範例來增強C。他深入研究了Smalltalk 的OO 實現,以獲取有關實現的想法。但他不願意為此放棄效能,因此他開始從事「C with Classes (帶有類別的C)」 的工作,希望C++ 程式碼在執行時應具有與C 程式碼相似(或更好)的效能。
1983 年,語言的名稱從「帶有類別的C」更改為C++。 C 語言中的++ 運算子是用於遞增變數的運算符,它使您可以深入了解Stroustrup 如何看待該語言。在此期間添加了許多新功能,其中最引人注目的是虛函數,函數重載,帶有&符號的引用,const 關鍵字和使用兩個正斜杠的單行註釋。
1985 年,Stroustrup 出版了名為*「C++ 程式語言」的書*。同年,C++ 實現為商業產品。該語言尚未正式標準化,因此使該書成為非常重要的參考。該語言在1989 年再次進行了更新,以包括受保護的成員和靜態成員,以及從多個類別的繼承。
1990 年,發行了*《帶註解的C++ 參考手冊*》。同年,Borland 的Turbo C++ 編譯器將作為商業產品發布。 Turbo C++ 增加了許多其他函式庫,這些函式庫會對C++ 的開發產生相當大的影響。儘管Turbo C++ 的最後一個穩定版本是2006 年,但該編譯器仍被廣泛使用。
1998 年,C++ 標準委員會發布了第一個C++ ISO / IEC 14882:1998 國際標準,其非正式名稱為C++ 98。據說*《帶註釋的C++ 參考手冊*》對標準的製定產生了很大的影響。還包括標準模板庫,該模板庫於1979 年開始概念開發。 2003 年,該委員會對1998 年標準所報告的多個問題做出了回應,並對其進行了相應的修訂。更改的語言稱為C++ 03。
2005 年,C++ 標準委員會發布了一份技術報告(稱為TR1),詳細介紹了他們計劃添加到最新C++ 標準中的各種功能。新標準被非正式地稱為C++ 0x,因為它有望在第一個十年結束之前的某個時間發布。諷刺的是,新標準要到2011 年年中才會發布。直到那時為止,已經發布了幾份技術報告,並且一些編譯器開始為新功能添加實驗性支援。
2011 年年中,新的C++ 標準(稱為C++ 11)完成。 Boost 函式庫專案對新標準產生了重大影響,其中一些新模組直接來自相應的Boost 函式庫。一些新功能包括正則表達式支持,全面的隨機化庫,新的C++ 時間庫,原子支持,標準線程庫,一種新的for 循環語法,提供的功能類似於某些其他語言中的foreach 循環, auto 關鍵字,新的容器類,對聯合和數組初始化列表以及可變參數模板的更好支援。
2014 年,C++ 14(也稱為C++ 1y)作為C++11 的一個小擴展發布,主要功能是錯誤修復和小的改進,國際標準投票程序草案於2014 年8 月中完成,加強lambda 函數, constexpr 和類型推導特性。
2017 年,發布C17 標準,C17 提供了很多東西。增強了核心語言和函式庫。
2020 年,發布C++20 標準,推出了許多重量級功能,其中比較重要的有:
Concepts:概念改變了我們思考和程式模板的方式。它們是模板參數的語意類別。它們使您可以直接在類型系統中表達您的意圖。如果出了什麼問題,您會收到清晰的錯誤訊息。
Ranges library:新的ranges 函式庫使它可以直接在容器上執行演算法,用管道符號組成演算法,並將其應用於無限資料流。
Coroutines:由於協程,C++ 中的非同步程式設計成為主流。協程是協作任務,事件循環,無限資料流或管道的基礎。
Modules:模組克服了頭檔的限制。頭檔和原始檔的分離變得和預處理器一樣過時了。最後,我們有更快的建置時間和更輕鬆的建置軟體包的方法。
Concurrency:Atomic Smart Pointers,Joining & Cancellable Threads,The C20 Synchronization Library,增強了C++ 並發程式設計能力;
C++ 教程
C++ 簡介
C++ 環境設定
C++ 基本語法
C++ 註解
C++ 資料型別
C++ 變數類型
C++ 變數作用域
C++ 常數
C++ 修飾符類型
C++ 儲存類別
C++ 運算符
C++ 循環
C++ 判斷
C++ 函式
C++ 數字
C++ 數組
C++ 字串
C++ 指針
C++ 引用
C++ 日期& 時間
C++ 基本的輸入輸出
C++ 資料結構
C++ 類別& 對象
C++ 繼承
C++ 重載運算子和重載函數
C++ 多態性
C++ 資料抽象
C++ 資料封裝
C++ 介面(抽象類別)
C++ 檔案和流
C++ 例外處理
C++ 動態記憶體
C++ 命名空間
C++ 模板
C++ 預處理器
C++ 訊號處理
C++ 多執行緒
C++ Web 程式設計
C++ STL 教程
C++ 標準函式庫
一、基礎知識
8.1 結構體基本概念
8.2 結構體定義與使用
8.3 結構體數組
8.4 結構體指針
8.5 結構體嵌套結構體
8.6 結構體做函數參數
8.7 結構體中const使用場景
7.1 指針的基本概念
7.2 指標變數的定義與使用
7.3 指標所佔記憶體空間
7.4 空指針和野指針
7.5 const修飾指針
7.6 指針和數組
7.7 指標和函數
7.8 指標、陣列、函數
1、goto 語句(不建議使用)
2、一維數組
3、二維數組
4.函數中的值傳遞
5.函數的聲明
6.函數的分文件編寫
7、指針
8、結構體
二、核心編程
3.1 函數預設參數
3.2 函數佔位參數
3.3 函數重載
2.1 引用的基本使用
2.2 引用注意事項
2.3 引用做函數參數
2.4 引用做函數返回值
2.5 引用的本質
2.6 常數引用
1.1 程式運行前
1.2 程式運行後
1.3 new操作符
1.記憶體分區模型
2、引用
3、函數
《深入理解C++11:C++11新特性解析與應用》
《C++入門經典(第10版)》
《C++ Primer Plus 第6版中文版(非同步圖書出品)》
《清華電腦圖書譯本:精通C++(第9版)》
《C++高階程式(第4版)》
《C++遊戲程式設計入門(第4版)(非同步圖書出品)》
《STL原始碼剖析》
《C++程式設計:原理與實務(基礎篇)(原書第2版)》
《Accelerated C++中文版》
《C++程式設計思想(兩卷合訂本)》
《中文版Effective STL:50條有效使用STL的經驗》
《C++程式剖析:問題、方案與設計準則》
《C++ Templates中文版》
《C++設計新思維》
《C++模板元程式設計》
《C++並發程式設計實戰》
《C++程式設計語言(第1-3部)(原書第4版)》
《C++標準函式庫(第2版)》
《Essential C++》
《C++ 語言的設計與演化》
《深度探索C++ 物件模型》
《泛型程式設計與STL》
每個c++開發人員都應該使用的10個c++11特性
在c++專案中你必須真正使用的15個c++11特性
如何在C++11 中使用Lambda 表達式
深入理解C++11
吐血整理:C++11新特性
C++11新特性之auto和decltype知識點
C++11新特性之左值引用、右值引用、移動語意、完美轉發
C++11新特性之列表初始化
C++11新特性std::function和lambda表達式
C++11新特性之模板改進
C++11新特性之線程相關知識點
C++11新特性之非同步操作-async
C++11新特性之智慧指針
C++11常用新特性(一)
C++11常用新特性(二)
C++14新特性淺談
C++14新特性的所有知識點都在這裡啦
總結歸納:C++17新特性
C++ 20語言特性
P1 C++程式設計簡介
P2 頭檔與類別的聲明
P3 構造函數
P4 參數傳遞與傳回值
P5 操作符重載與臨時對象
P6 複習Complex類別的實作過程
P7 三大函數:拷貝構造,拷貝複製,析構
P8 堆,堆疊與記憶體管理
P9 複習String類別的實作過程
P10 擴充補充:類別模板,函數模板,及其他
P11 組合與繼承
P13 委託相關設計
P14 1 導讀
P15 2 conversion function
P16 3 non explicit one argument constructor
P17 4 pointer like classes
P18 5 function like classes
P19 6 namespace經驗談
P20 7 class template
P21 8 Funtion Template
P22 9 Member Template
P23 10 specialization
P24 11 模板偏特化
P25 12 模板模板參數
P26 13 關於C++標準函式庫
P27 14 三個主題
P28 15 Reference
P29 16 複合&繼承關係下的構造與析構
P30 17 關於vptr和vtbl
P31 18 關於this
P32 19 0 關於Dynamic Binding
P33 19 1 關於Dynamic Binding
P34 20 關於New,Delete
P35 21 Operator new,operator delete
P36 22 範例
P37 23 重載new,delete$範例
P38 24 Basic String使用newextra擴充申請量
C++ Standard Library - 一系列類別和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分
Standard Template Library - 標準模板庫
C POSIX library - POSIX系統的C標準函式庫規範
ISO C++ Standards Committee - C++標準委員會
C++ FAQ − C++ 常見問題
Free Country − Free Country 提供了免費的C++ 原始碼和C++ 函式庫,這些程式碼和函式庫涵蓋了壓縮、存檔、遊戲程式設計、標準範本庫和GUI 程式設計等C++ 程式設計領域。
C and C++ Users Group − C 和C++ 的使用者團體提供了免費的涵蓋各種程式設計領域C++ 專案的原始程式碼,包括AI、動畫、編譯器、資料庫、偵錯、加密、遊戲、圖形、GUI、語言工具、系統程式設計等
LearnCpp - 免費學習c++編程
CodeCogs - CodeCogs是一項協作的開放原始碼庫,C/C++的數值方面的元件
codeproject - codeproject提供的C/C++資源程式碼項目
thoughtco - 遊戲有關的C++原始碼
Free C/C++ Libraries - 免費C++原始碼和其它有用的工具
The C++ Standard Library - 這是一個收集了數C/C++網站連結清單的網頁
cplusplus - C++學習網站
C++ Source Codes - 這是一個全面的關於C++的345個原始碼清單
Apache C++ Standard Library : 是一系列演算法,容器,迭代器和其他基本元件的集合
ASL : Adobe原始碼庫提供了同行的評審和可移植的C++原始碼庫。
Boost : 大量通用C++函式庫的集合。
BDE : 來自於彭博資訊實驗室的開發環境。
Cinder : 提供專業品質創意編碼的開源開發社群。
Bxxomfort : 輕量級的,只包含頭檔的函式庫,將C++ 11的一些新特性移植到C++03。
Dlib : 使用契約式程式設計和現代C++科技設計的通用的跨平台的C++函式庫。
EASTL : EA-STL公共部分
ffead-cpp : 企業應用程式開發框架
Folly : 由Facebook開發和使用的開源C++函式庫。
JUCE : 包羅萬象的C++類別庫,用於開發跨平台軟體
libphenom : 用於建構高效能和高度可擴展性系統的事件框架。
LibSourcey : 用於即時的視訊串流和高效能網路應用程式的C++11 evented IO
Loki : C++函式庫的設計,包括常見的設計模式和慣用語的實作。
MiLi : 只含頭檔的小型C++函式庫
openFrameworks : 開發C++工具包,用於創意編碼。
Qt : 跨平台的應用程式和使用者介面框架
Reason : 跨平台的框架,使開發者能夠更容易地使用Java,.Net和Python,同時也滿足了他們對C++性能和優勢的需求。
ROOT : 具備所有功能的一系列面向對象的框架,能夠非常有效率地處理和分析大量的數據,為歐洲原子能研究機構所用。
STLport : 是STL具代表性的版本
STXXL : 用於額外的大型資料集的標準範本庫。
Ultimate++ : C++跨平台快速應用程式開發框架
Windows Template Library : 用於開發Windows應用程式和UI元件的C++函式庫
Yomm11 : C++11的開放multi-methods.
Boost.Asio : 用於網路和底層I/O程式設計的跨平台的C++函式庫。
libev : 功能齊全,高效能的時間循環,輕微地仿效libevent,但是不再像libevent一樣有局限性,也修復了它的一些bug。
libevent : 事件通知庫
libuv : 跨平台異步I/O。
libco : 協程,微信支援8億用戶同時在線的底層IO庫。功能強大
libgo : golang風格的並發框架,C++11實作協程函式庫
ACE : C++物件導向網路變成工具包
Casablanca : C++ REST SDK
cpp-netlib : 高階網路程式設計的開源函式庫集合
libCurl : 多協定檔案傳輸庫
Mongoose : 非常輕量級的網頁伺服器
Muduo : 用於Linux多執行緒伺服器的C++非阻塞網路庫
net_skeleton : C/C++的TCP 用戶端/伺服器庫
POCO : 用於建立網路和基於互聯網應用程式的C++類別庫,可以運行在桌面,伺服器,移動和嵌入式系統。
RakNet : 為遊戲開發人員提供的跨平台的開源C++網路引擎。
Tufao : 用於Qt之上的C++建構的非同步Web框架。
WebSocket++ : 基於C++/Boost Aiso的websocket 客戶端/伺服器函式庫
ZeroMQ : 高速,模組化的非同步通訊庫
f-stack : 騰訊開源的協定棧,基於DPDK的高效能使用者態協定棧。
NtyTcp : 單執行緒的協定棧的,基於netmap,DPDK,rawSocket的實作。
LWIP : 針對RAM 平台的精簡版的TCP/IP 協定堆疊實作。
mTCP : 針對多核心系統的高可擴展性的用戶空間TCP/IP 協定堆疊。
4.4BSD : * nix的協定堆疊是源自於4.4BSD的。
Nginx : 一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。
Lighttpd : 一款開源Web 伺服器軟體,安全快速,符合業界標準,適配性強並且針對高配置環境進行了最佳化。
Libmicrohttpd : GNU軟體下的簡單c庫的Web伺服器。 API簡單,快速。
shttpd : 基於Mongoose的Web伺服器框架。
CivetWeb : 提供易於使用,強大的,C/C++嵌入式Web伺服器,帶有可選的CGI,SSL和Lua支援。
CppCMS : 免費高效能的Web開發框架(不是CMS).
Crow : 一個C++微型web框架(靈感來自於Python Flask)
Kore : 使用C語言開發的用於web應用程式的超快速和靈活的web伺服器/框架。
libOnion : 輕量級的函式庫,幫助你使用C程式語言建立web伺服器。
QDjango : 使用C++編寫的,基於Qt庫的web框架,試圖效仿Django API,因此得此名。
Wt : 開發Web應用的C++函式庫。
C++ Standard Library : 是一系列類別和函數的集合,使用核心語言編寫,也是C++ISO自身標準的一部分。
Standard Template Library : 標準範本庫, STL
ISO C++ Standards Committee : C++標準委員會
FMOD : 易於使用的跨平台的音訊引擎和音訊內容的遊戲創作工具。
Maximilian : C++音訊與音樂數位訊號處理庫
OpenAL : 開源音訊庫—跨平台的音訊API
Opus : 一個完全開放的,免版稅的,高度通用的音頻編解碼器
Speex : 免費編解碼器,為Opus所廢棄
Tonic : C++易用且高效的音訊合成
Vorbis : Ogg Vorbis是一種完全開放的,非專有的,免版稅的通用壓縮音訊格式。
lisequence : 用於表示和分析群體遺傳學資料的C++函式庫。
SeqAn : 專注於生物資料序列分析的演算法和資料結構。
Vcflib : 用於解析和處理VCF檔的C++函式庫
Wham : 直接把聯想測試應用在BAM檔案的基因結構變異。
bzip2 : 一個完全免費,免費專利和高品質的資料壓縮
doboz : 能夠快速解壓縮的壓縮庫
PhysicsFS : 對各種歸檔提供抽象存取的函式庫,主要用於視訊遊戲,設計靈感部分來自於Quake3的檔案子系統。
KArchive : 用於創建,讀寫和操作文件檔案(例如zip和tar)的庫,它通過QIODevice的一系列子類,使用gzip格式,提供了透明的壓縮和解壓縮的數據。
LZ4 : 非常快速的壓縮演算法
LZHAM : 無損壓縮資料庫,壓縮比率跟LZMA接近,但是解壓縮速度卻快得多。
LZMA : 7z格式預設和通用的壓縮方法。
LZMAT : 及其快速的即時無損資料壓縮庫
Minizip : Zlib最新bug修復,支援PKWARE磁碟跨越,AES加密和IO緩衝。
Snappy : 快速壓縮和解壓縮
ZLib : 非常緊湊的資料流壓縮庫
ZZIPlib : 提供ZIP歸檔的讀取權限。
Boost.Compute : OpenCL的C++GPU計算庫
Bolt : 針對GPU進行最佳化的C++模板庫
C++React : 用於C++11的反應性程式庫
Intel TBB : Intel線程構件塊
Libclsph : 基於OpenCL的GPU加速SPH流體模擬庫
OpenCL : 平行程式設計的異質系統的開放標準
OpenMP : OpenMP API
Thrust : 類似C++標準模板庫的平行演算法庫
HPX : 用於任何規模的平行和分散式應用程式的通用C++運行系統
VexCL : 用於OpenCL/CUDA 的C++向量表達式模板庫。
Bcrypt : 一個跨平台的檔案加密工具,加密檔案可以移植到所有可支援的作業系統和處理器。
BeeCrypt : 快速的加密圖形庫,功能強大,介面方便。
Botan : C++加密函式庫
Crypto++ : 一個有關加密方案的免費的C++函式庫
GnuPG : OpenPGP標準的完整實現
GnuTLS : 實作了SSL,TLS和DTLS協定的安全通訊庫
Libgcrypt : 基於GnuPG的加密圖形庫。
Libmcrypt : 線程安全,提供統一的API。
LibreSSL : 免費的SSL/TLS協議,屬於2014 OpenSSL的一個分支
LibTomCrypt : 一個非常全面的,模組化的,可移植的加密工具
libsodium : 基於NaCI的加密庫,固執己見,容易使用
Nettle : 底層的加密庫
OpenSSL : 一個強大的,商用的,功能齊全的,開放原始碼的加密函式庫。
hiberlite : 用於Sqlite3的C++物件關係映射
LevelDB : 快速鍵值儲存庫
LMDB : 符合資料庫四大基本元素的嵌入鍵值存儲
MySQL++ : 封裝了MySql的C API的C++ 包裝器
RocksDB : 來自Facebook的嵌入鍵值的快速存儲
SQLite : 一個完全嵌入式的,功能齊全的關係資料庫,只有幾百KB,可以正確包含到你的專案中。
MongoDB : 一個基於分散式檔案儲存的資料庫
Boost.Test : Boost測試函式庫
Catch : 一個很時尚的,C++原生的框架,只包含頭文件,用於單元測試,測試驅動開發和行為驅動開發。
CppUnit : 由JUnit移植過來的C++測試框架
GoogleTest : 谷歌C++測試框架
ig-debugheap : 用於追蹤記憶體錯誤的多平台偵錯堆
MemTrack : 用於C++追蹤記憶體分配
MicroProfile : 跨平台的網路試圖分析器
UnitTest++ : 輕量級的C++單元測試框架
C++ B-Tree : 基於B樹資料結構,實作指令記憶體容器的範本庫
Hashmaps : C++中開放尋址哈希表演算法的實現
Cocos2d-x : 一個跨平台框架,用於建立2D遊戲,互動圖書,演示和其他圖形應用程式。
Grit : 社群項目,用於建立一個免費的遊戲引擎,實現開放的世界3D遊戲。
lrrlicht : C++語言編寫的開源高效能的即時#D引擎
PolyCode : C++實現的用於創建遊戲的開源框架(與Lua綁定)。
bgfx : 跨平台的渲染庫
Cairo : 支援多種輸出設備的2D圖形庫
Horde3D : 一個小型的3D渲染和動畫引擎
magnum : C++11和OpenGL 2D/3D 圖形引擎
Ogre 3D : 用C++編寫的一個面向場景,即時,靈活的3D渲染引擎(並非遊戲引擎)
OpenSceneGraph : 具有高效能的開源3D圖形工具包
Panda3D : 用於3D渲染和遊戲開發的框架,用Python和C++編寫。
Skia : 用於繪製文字,圖形和圖像的完整的2D圖形庫
urho3d : 跨平台的渲染和遊戲引擎。
Boost.GIL : 通用圖片庫
CImg : 用於影像處理的小型開源C++工具包
FreeImage : 開源程式庫,支援現在多媒體應用程式所需的通用圖片格式和其他格式。
GDCM : Grassroots DICOM 庫
ITK : 跨平台的開源影像分析系統
Magick++ : ImageMagick程式的C++接口
OpenCV : 開源電腦視覺類別庫
tesseract-ocr : OCR引擎
VIGRA : 用於影像分析通用C++電腦視覺庫
VTK : 用於3D電腦圖形學,影像處理和視覺化的開源免費軟體系統。
gettext : GNU gettext
IBM ICU : 提供Unicode 和全球化支援的C、C++ 和Java庫
libiconv : 用於不同字元編碼之間的編碼轉換庫
frozen : C/C++的Jason解析產生器
Jansson : 進行編解碼與處理Jason資料的C語言庫
jbson : C++14中建構和迭代BSON data,和Json 文件的函式庫
JeayeSON : 非常健全的C++ JSON函式庫,只包含頭檔
JSON++ : C++ JSON 解析器
json-parser : 用可移植的ANSI C編寫的JSON解析器,佔用記憶體非常少
json11 : 一個迷你的C++11 JSON函式庫
jute : 非常簡單的C++ JSON解析器
ibjson : C語言中的JSON解析和打印庫,很容易和任何模型集成
libjson : 輕量級的JSON庫
PicoJSON : C++中JSON解析序列化,只包含頭檔
Qt-Json : 用於JSON資料和QVariant層次間的相互解析的簡單類
QJson : 將JSON資料映射到QVariant物件的基於Qt的庫
RepidJSON : 用於C++的快速JSON 解析產生器,包含SAX和DOM兩種風格的API
Boost.Log : 設計非常模組化,並且具有擴充性
easyloggingpp : C++日誌庫,只包含單一的頭檔。
Log4cpp : 一系列C++類別庫,靈活添加日誌到文件,系統日誌,IDSA和其他地方。
templog : 輕量級C++函式庫,可以加入日誌到你的C++應用程式中
btsk : 遊戲行為樹啟動器工具
Evolving Objects : 基於模板的,ANSI C++演化計算庫,能夠幫助你非常快速地寫出自己的隨機最佳化演算法。
Caffe : 快速的神經網路框架
CCV : 以C語言為核心的現代電腦視覺庫
mlpack : 可擴充的C++機器學習函式庫
OpenCV : 開源電腦視覺庫
Recommender : 使用協同過濾進行產品推薦/建議的C語言庫。
SHOGUN : Shogun 機器學習工具
sofia-ml : 用於機器學習的快速增量演算法套件
Armadillo : 高品質的C++線性代數函式庫,速度和易用性做到了很好的平衡。文法和MatlAB很相似
blaze : 高效能的C++數學函式庫,用於密集和稀疏演算法。
ceres-solver : 來自Google的C++函式庫,用於建模和解決大型複雜非線性最小平方問題。
CGal : 高效,可靠的集合演算法集合
CML : 用於遊戲和圖形的免費C++數學庫
Eigen : 高階C++模板頭檔庫,包括線性代數,矩陣,向量操作,數值解決和其他相關的演算法。
GMTL : 數學圖形範本庫是一組廣泛實現基本圖形的工具。
GMP : 用於個高精度計算的C/C++函式庫,處理有符號整數,有理數和浮點數。
GStreamer : 建構媒體處理元件圖形的函式庫
LIVE555 Streaming Media : 使用開放標準協定(RTP/RTCP, RTSP, SIP) 的多媒體串流庫
libVLC : libVLC (VLC SDK)媒體框架
QtAV : 基於Qt和FFmpeg的多媒體播放框架,能夠幫助你輕鬆地寫出一個播放器
SDL : 簡單直控媒體層
SFML : 快速,簡單的多媒體函式庫
Box2D : 2D的遊戲物理引擎。
Bullet : 3D的遊戲物理引擎。
Chipmunk : 快速,輕量級的2D遊戲物理庫
LiquidFun : 2D的遊戲物理引擎
ODE : 開放動力學引擎-開源,高效能函式庫,模擬剛體動力學。
ofxBox2D : Box2D開源框架包裝器。
Simbody : 高性能C++多體動力學/物理庫,模擬關節生物力學和機械系統,像車輛,機器人和人體骨骼。
MOOS-Ivp : 一組開源C++模組,提供機器人平台的自主權,尤其是自主的海洋車輛。
MRPT : 移動機器人程式設計工具包
PCL : 點雲庫是一個獨立的,大規模的開放項目,用於2D/3D影像和點雲處理。
Robotics Library : 一個獨立的C++函式庫,包括機器人動力學,運動規劃與控制。
RobWork : 一組C++函式庫的集合,用於機器人系統的模擬與控制。
ROS : 機器人作業系統,提供了一些函式庫和工具來幫助軟體開發人員創建機器人應用程式。
ChaiScript : 用於C++的易於使用的嵌入式腳本語言。
Lua : 用於設定檔和基本應用程式腳本的小型快速腳本引擎。
luacxx : 用於建立Lua綁定的C++ 11 API
SWIG : 一個可以讓你的C++程式碼連結到JavaScript,Perl,PHP,Python,Tcl和Ruby的包裝器/介面產生器
V7 : 嵌入式的JavaScript 引擎。
V8 : 谷歌的快速JavaScript引擎,可以嵌入到任何C++應用程式中。
Cap'n Proto : 快速資料交換格式和RPC系統。
cereal : C++11 序列化函式庫
FlatBuffers : 記憶體高效的序列化函式庫
MessagePack : C/C++的高效二進位序列化函式庫,例如JSON
ProtoBuf : 協定緩衝,Google的資料交換格式。
SimpleBinaryEncoding : 用於低延遲應用程式的對二進位格式的應用程式資訊的編碼和解碼。
Thrift : 高效率的跨語言IPC/RPC,用於C++,Java,Python,PHP,C#和其它多種語言中,最初由Facebook開發。
libvpx : VP8/VP9編碼解碼SDK
FFMpeg : 一個完整的,跨平台的解決方案,用於記錄,轉換視訊和音訊串流。
libde265 : 開放的h.265視訊編解碼器的實作。
OpenH264 : 開源H.364 編解碼器。
Theora : 免費開源的影片壓縮格式。
LibXml++ : C++的xml解析器
PugiXML : 用於C++的,支援XPath的輕量級,簡單快速的XML解析器。
RapidXML : 試圖創建最快的XML解析器,同時保持易用性,可移植性和合理的W3C相容性。
TinyXML : 簡單小型的C++XML解析器,可以輕鬆整合到其它專案中。
TinyXML2 : 簡單快速的C++CML解析器,可以輕鬆整合到其它專案中。
TinyXML++ : TinyXML的一個全新的接口,使用了C++的許多許多優勢,模板,異常和更好的異常處理。
Xerces-C++ : 用可移植的C++的子集編寫的XML驗證解析器。
thread_local
static_assert
nullptr
noexcept
decltype
constexpr
char16_t
char32_t
alignof
alignas
auto
class
default
delete
export
extern
inline
mutable
sizeof
struct
using
is_void
is_integral
is_floating_point
is_array
is_enum
is_union
is_class
is_function
is_pointer
is_lvalue_reference
is_rvalue_reference
is_member_object_pointer
is_member_function_pointer
is_fundamental
is_arithmetic
is_scalar
is_object
is_compound
is_reference
is_member_pointer
is_const
is_volatile
is_trivial
is_trivially_copyable
is_standard_layout
is_literal_type
is_empty
is_polymorphic
is_abstract
is_signed
is_unsigned
is_constructible
is_trivially_constructible
is_nothrow_constructible
is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible
is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible
is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible
is_assignable
is_trivially_assignable
is_nothrow_assignable
is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable
is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable
is_destructible
is_trivially_destructible
is_nothrow_destructible
has_virtual_destructor
std::array
std::forward_list
std::begin
std::end
std::move
容器初始化
emplace
std::unordered_map
std::unordered_multimap
std::unordered_set
std::unordered_multiset
std::make_tuple
std::get
std::tie
std::hash<std::string>
std::hash<std::u16string>
std::hash<std::u32string>
std::hash<std::wstring>
std::hash<std::error_code>
std::hash<std::bitset>
std::hash<std::type_index>
std::hash<std::vector<bool>>
std::shared_ptr
std::weak_ptr
std::unique_ptr
auto_ptr(棄用)
basic_regex
sub_match
match_results
cv限定函數
引用限定
std::function
std::bind
std::bad_function_call
mem_fn
類型別名
類別成員初始化
仿函數(functor)
委託構造函數
繼承建構函數
移動構造函數
移動賦值運算符
尖括號“>”
別名模板
外部模板
可變參數模板
預設模板參數
std::atomic<bool>
std::atomic<char>
std::atomic<signed char>
std::atomic<unsigned char>
std::atomic<short>
std::atomic<unsigned short>
std::atomic<int>
std::atomic<unsigned int>
std::atomic<long>
std::atomic<unsigned long>
std::atomic<long long>
std::atomic<unsigned long long>
std::atomic<char8_t>
std::atomic<char16_t>
std::atomic<char32_t>
std::atomic<wchar_t>
std::atomic<std::int8_t>
std::atomic<std::uint8_t>
std::atomic<std::int16_t>
std::atomic<std::uint16_t>
std::atomic<std::int32_t>
std::atomic<std::uint32_t>
std::atomic<std::int64_t>
std::atomic<std::uint64_t>
std::atomic<std::int_least8_t>
std::atomic<std::uint_least8_t>
std::atomic<std::int_least16_t>
std::atomic<std::uint_least16_t>
std::atomic<std::int_least32_t>
std::atomic<std::uint_least32_t>
std::atomic<std::int_least64_t>
std::atomic<std::uint_least64_t>
std::atomic<std::int_fast8_t>
std::atomic<std::uint_fast8_t>
std::atomic<std::int_fast16_t>
std::atomic<std::uint_fast16_t>
std::atomic<std::int_fast32_t>
std::atomic<std::uint_fast32_t>
std::atomic<std::int_fast64_t>
std::atomic<std::uint_fast64_t>
std::thread
std::mutex
std::lock
std::call_once
std::atomic
std::cond_ition_variable
std::async
volatile
std::future
std::thread_local
std::exception_ptr
std::make_exception_ptr
std::current_exception
std::rethrow_exception
std::nested_exception
std::throw_with_nested
std::rethrow_if_nested
std::error_category
std::generic_category
std::error_condition
std::errc
std::error_code
std::system_error
語法:__pragma(字串字面量)
_Pragma運算符
_cplusplus宏
for迴圈for(x:range)
alignof
alignas
std::alignment_of
std::aligned_storage
std::max_align_t
std::align
explicit關鍵字
語法:static_assert(常數表達式,"提示字串")
static assert
數位限制
原始字串
追蹤返回類型語法
擴展的friend語法
擴展的整數
非受限聯合體
內嵌名字空間
使用者定義的字面量
強型別枚舉
random device
std::ref和std::cref
constexpr
lamda表達式
nullptr
防止類型收窄
初始化列表——Initializer List
initializer_list(作入參)
統一的初始化語法和語義
POD
long long
move semantics
rvalue reference
c99特性
generalized SFINAE rules
檢查類型是否為std::nullptr_t
is_final(檢查類型是否為final 類別類型)
exchange(將實參替換為一個新值,並傳回其先前值)
integer_sequence(實作編譯時整數數列)
rbegin(傳回指向一個容器或陣列的逆向迭代器)
crbegin(傳回指向一個容器或陣列的逆向迭代器)
rend(返回容器或陣列的逆向尾迭代器)
crend(返回容器或陣列的逆向尾迭代器)
make_reverse_iterator(建立擁有從實參推出的類型的std::reverse_iterator)
begin(傳回指向容器或陣列起始的迭代器)
cbegin(傳回指向容器或陣列起始的迭代器)
end(傳回指向容器或陣列結尾的迭代器)
cend(傳回指向容器或陣列結尾的迭代器)
rbegin(傳回指向一個容器或陣列的逆向迭代器)
crbegin(傳回指向一個容器或陣列的逆向迭代器)
rend(返回容器或陣列的逆向尾迭代器)
crend(返回容器或陣列的逆向尾迭代器)
register
byte(位元組類型)
is_aggregate(檢查類型是否聚合類型)
is_swappable_with(檢查一個類型的物件是否能與同類型或不同類型的物件交換)
is_swappable(檢查一個類型的物件是否能與同類型或不同類型的物件交換)
is_nothrow_swappable_with(檢查一個類型的物件是否能與同類型或不同類型的物件交換)
is_nothrow_swappable(檢查一個類型的物件是否能與同類型或不同類型的物件交換)
is_invocable(檢查類型能否以給定的實參型別呼叫(如同以std::invoke))
is_invocable_r(檢查類型能否以給定的實參型別呼叫(如同以std::invoke))
is_nothrow_invocable(檢查類型能否以給定的實參型別呼叫(如同以std::invoke))
is_nothrow_invocable_r(檢查類型能否以給定的實參型別呼叫(如同以std::invoke))
invoke_result(推導以一組實參呼叫一個可呼叫物件的結果型別)
void_t(變參別名模板)
conjunction(變參的邏輯與元函數)
disjunction(變參的邏輯或元函數)
ndisjunctionegation(邏輯非元函數)
integral_constant(具有指定值的指定類型的編譯期常數)
as_const(獲得到其實參的const 引用)
apply(以一個實參的元組來呼叫函數)
make_from_tuple(以一個實參元組建構物件)
optional(可能或可能不保有一個物件的包裝器)
make_optional(建立一個optional 物件)
std::swap(std::optional)(特化std::swap 演算法)
std::hash<std::optional>(特化std::hash 演算法)
nullopt_t(帶未初始化狀態的optional 類型的指示器)
bad_optional_access(指示進行了到不含值的optional 的有檢查存取的異常)
nullopt(nullopt_t 類型物件)
variant(類型安全的可辨識聯合體)
visit(以一或多個variant 所保有的各實參調用所提供的函數物件)
holds_alternative(檢查某個variant 是否目前持有某個給定類型)
std::get(std::variant)(以給定索引或類型(若類型唯一)讀取variant 的值,錯誤時拋出例外)
get_if(以給定索引或類型(若其唯一),獲得指向被指向的variant 的值的指針,錯誤時返回空指針)
std::swap(std::variant)(特化std::swap 演算法)
monostate(用作非可預設構造類型的variant 的首個可選項的佔位符類型)
bad_variant_access(非法地存取variant 的值時所拋出的例外)
variant_size(在編譯時獲得variant 可選項清單的大小)
variant_size_v(在編譯時取得variant 可選項清單的大小)
variant_alternative(在編譯時取得以其下標指定的可選項的型別)
variant_alternative_t(在編譯時取得以其下標指定的可選項的型別)
std::hash<std::variant>(特化std::hash 演算法)
variant_npos(非法狀態的variant 的下標)
any(可保有任何可複製構造(CopyConstructible) 類型的實例的物件)
std::swap(std::any)(特化std::swap 演算法)
any_cast(對被容納物件的類型安全存取)
make_any(建立any 物件)
bad_any_cast(當類型不符時按值返回形式的any_cast 所拋出的異常)
to_chars(轉換整數或浮點值到字元序列象)
from_chars(轉換字元序列到整數或浮點數值)
chars_format(指定std::to_chars 和std::from_chars 所使用的格式)
empty(檢查容器是否為空)
data(獲得指向底層數組的指標)
insert_or_assign(插入元素,或若鍵已存在則賦值給目前元素)
try_emplace(若鍵不存在則原位插入,若鍵存在則不做任何事)
extract(從另一容器釋出結點)
merge(從另一個容器接合結點)
insert_or_assign(插入元素,或若鍵已存在則賦值給目前元素)
try_emplace(若鍵不存在則原位插入,若鍵存在則不做任何事)
extract(從另一容器釋出結點)
merge(從另一個容器接合結點)
<h5 id="user-content-cpp_headfile_initializer_list" tabindex="-1" class="head