首先,放兩個鏈接:
- 算官網吧 Standard C++
- 查C++的一些API函數很好用的 The C++ Resources Network - cplusplus
C++發展歷程
時至今日(2018.12.12),C++17已經發布,C++20開發進行中。
GCC支持C++11
有大量的編譯器已經支持C++11,當然也包含GCC。
C++的標準是一個持續發展的過程,不斷有新增和刪除,所以GCC對C++11的標準支持也是動態的,比如:GCC4.4(v1.0)就支持c++11標準中的auto關鍵字;GCC4.7才支持Extended friend Declarations;GCC4.8才支持alignas等等。
一般認爲4.8版本以上的GCC對C++11的支持比較完整。可以參考下面鏈接:
GCC支持C++11特性的版本
GCC4.8默認編譯程序是用C++98標準,如果要使用C++11標準,需指定-std=c++11。
可以通過man g++,搜索-std查看。
C++11新特性
C++11標準支持了許多新特性,比如:類型推導關鍵字auto、空指針nullptr、多線程、lamda表達式等等。更詳細的可以參考wiki C++11。下面舉一些自己認爲很有用的實例。
類型推導關鍵字auto
空指針nullptr
模板嵌套寫法優化 > >
在以前的C++標準中,假如你寫一個含有其他模板類型的模板:
vector<vector<int> > vector_of_int_vectors;
你必須在結束的兩個’>‘之間添加空格。而且當你寫成>>而沒有空格時,你將得到困惑和誤導的編譯錯誤信息。產生這種行爲的原因是C++詞法分析的最大匹配原則(maximal munch rule)。
而在C++11標準中,就不這麼麻煩了,可以不加空格了。
vector<vector<int>> vector_of_int_vectors;