【C++】C++14
最新的C++標準為C++14,即ISO/IEC14882:2014,從一開始的C++98到後來的C++03、C++11,以及若干年後的C++17,對廣大C++愛好者來說,每一次的版本提升無疑是一種福音,那就一起擁抱最新的C++技術,共創屬於C++的輝煌時代。
C++14主要是對C++11的一個擴充套件,熟悉C++11的小夥伴們想必不會對C++14的新特性感到陌生,還是先總結一下吧,方便以後使用。
新的語言特性——
1、lambda
原型如下:
[capture] (params) mutable exception attribute - > ret {body}
(1)capture在C++11中捕獲的是已在外層作用域宣告的變數,而在C++14中可以任意宣告lambda的成員,且可以用任意的表示式初始化。
(2)params在C++11中需要被宣告為具體的型別,而在C++14中可以使用型別說明符auto。
2、型別推導
(1)在C++11中,lambda函式可以根據return語句的表示式型別推導返回型別,有後置返回型別說明符;而在C++14中,一般的函式也有這個特性,函式宣告必須將auto作為返回型別,但沒有後置返回型別說明符。
(2)auto和decltype()是C++11引入的兩種推導型別的方式,decltype()需顯式地指定其引數;而C++14增加了decltype(auto)的語法,也就不必顯示地指定其引數了。
3、constexpr
C++11引入了constexpr關鍵字,可以修飾函式、變數,有點像const,但用法不同;C++14對constexpr進行了擴充套件,取消了一些被限制的用法。
4、變數模板
傳統的C++模板可以是函式模板或類别範本,C++11引入了模板別名,需用到using關鍵字而不是typedef,C++14則帶來了變數模板。
5、初始化
C++11引入了大括號初始化成員變數的方法,C++14則對這一初始化方法進行了擴充套件,當花括號初始化列表沒有提供某成員變數的值時會被自動初始化。
6、二進位制字面量
C++14的數字可以用二進位制形式指定,其字首為0b或0B。
7、數字分位符
C++14引入了單引號來作為數字分位符,增強了數字可讀性。
新的標準庫特性——
1、共享的互斥體
std::shared_timed_mutex
2、關聯容器的異構查詢
C++標準庫定義了四個關聯容器類,map、set、multimap、multiset,查詢時只能接收指定型別的引數,C++14允許通過其它型別進行查詢,只需要這個型別和實際的鍵型別之間可以進行比較操作。
3、標準自定義字面量
C++11增加了自定義字面量的特性,使使用者能夠定義新的字面量字尾,但標準庫並沒有對這一特性加以利用,C++14標準庫定義了以下字面量字尾:
“s”,用於建立各種std::basic_string型別。
“h”、“min”、“s”、“ms”、“us”、“ns”,用於建立相應的std::chrono::duration時間間隔。
4、通過型別定址多元組
C++11引入的std::tuple型別允許不同型別的值的聚合體用編譯器整型常數索引,C++14還允許使用型別代替常數索引,從多元組中獲取物件,若多元組含有多於一個這個型別的物件,將會產生一個編譯錯誤。
5、其它
std::make_unique可以像std::make_shared一樣使用,用於產生std::unique_ptr物件。
std::integral_constant增加了一個返回常量值的operator()過載。
全域性std::begin/std::end函式之外,增加了std::cbegin/std::cend函式,它們總是返回常量迭代器。
相關文章
- C++14的一些新特性C++
- KTL 用C++14寫公式的K線工具 - 0.9.2版C++公式
- 【C++】C++基礎知識C++
- 【C++】C++之Lambda表示式C++
- C++C++
- [C++之旅] 7 C++類和物件C++物件
- 【C++】C++的位元組對齊C++
- 【C++】 C++知識點總結C++
- 【C++】C++之型別轉換C++型別
- 學懂現代C++——《Effective Modern C++》之轉向現代C++C++
- 【C++】 C++異常捕捉和處理C++
- C++學習筆記——C++ 繼承C++筆記繼承
- C++學習筆記-Cherno C++系列C++筆記
- 【C/C++】 C++暫存器優化C++優化
- C++圖C++
- C++——模板C++
- C++ 物件C++物件
- c++ mutableC++
- C++ pointerC++
- C++ 引用C++
- C++ bitsetC++
- vector——C++C++
- 【C++】引用C++
- C++概括C++
- C++ 模板C++
- C++(typename)C++
- C++(clock())C++
- c++ binderC++
- Essential C++C++
- c++ vectorC++
- c++:-3C++
- c++:-1C++
- c++:-2C++
- c++:-4C++
- 求解c++C++
- c++:-5C++
- C++學習步驟(C++該如何學)C++
- c++語言教程——01 c++的簡介C++
- C++入門(2):為何還學C++?C++