C 11語言特性小結

2021-09-06 17:05:00 字數 1400 閱讀 2032

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...