1、型別推導(auto)
這個不用多說,c++11提供了不需要預先知道變數型別時,即可定義變數的方式:auto關鍵字。其實我認為一般在明確知道變數型別時,不用偷懶還是用確定的變數型別定義即可,一般auto用在不知道變數型別或者是宣告迭代器變數時:
vector<
int> vec;
vector<
int> vec:
:iterator iter = vec.
begin()
;auto iternew = vec.
begin()
;vector<
int> vec2 =
;auto
& iter2 = vec[1]
;iter2 +=1
;// vec2 =
2、空指標(nullptr)
之前都用null表示空指標,實際上null與0是等價的,這樣有時字元變數與整型變數容易混淆導致錯誤,c++11用專門的空指標資料型別:nullptr。
這個混淆主要是發生在引數過載過程中,傳入空指標到底是用引數為int的函式還是引數為char*的函式呢?
3、容器的for迴圈遍歷
這個就記住這種格式吧:
for
(const
auto
& x : vec)
4、匿名函式(lambda表示式)
匿名函式是及其重要的改進,是函式式程式設計風格的基石,簡單地說就是可以在需要的地方定義函式,而不是一定要提前定義好。
using namespace std;
#define _for(i,a,b) for(int i=(a); i<(b); i++)
const
int n =
1000000000
;struct ts
;ts tss[n]
void
gendata()
}int
main()
);return0;
}
雜湊容器
之前我們經常用到map容器和multimap容器,其都是基於二叉樹實現的,在資料量較大時查詢時間複雜度為o(logn),並無法達到標準的hash演算法的速度,c++正式引入了幾個基於hash演算法的容器:unordered_map, unordered_set, unordered_multimap 和 unordered_multiset。當不需要元素排序時可以盡量使用這些容器獲得更好的查詢效能。
c 11語言新特性
模板的閉符之間不需要空格 vector 等同於 vector nullptr取代0或者null 以auto完成型別自動推導 一致性初始化與初值列 使用大括號進行初始化動作,如 int values vectorv 初值列如 int j j is initialized by 0 int p q is...
c 11常用特性
目錄 一 atomic 1 std atomic flag 2 std atomic 二 std thread 三 std condition variable 四 右值引用 五 std function std bind 六 lambda表示式 atomic flag 一種簡單的原子布林型別,只支...
c 11 特性學習
auto 含義改變,現為自動型別推斷 register c 11之前為建議使用cpu暫存器儲存變數,現在幾乎沒有意義 include include include include include include using namespace std initial intsum initiali...