c 11的新特性簡介

2021-10-21 21:52:03 字數 2461 閱讀 1185

nullptr:

​ 出現原因:原來null因編譯器不同可能是0,也可能是(void*),且( void *)不能隱式轉化為其他型別的空指標,需要強轉。

​ nullptr作用:其型別為nullptr_t ,其可以隱式轉換為所有型別的空指標,解決null的指標問題。並且使很好的區分了空指標與0。

智慧型指標:

unique_ptr:

不共享他的指標,該指標所指的內容無法被值傳遞,無法建立副本,只能移動unique_ptr。其內容所有者唯一。

weak_ptr:

用於配合shared_ptr而設計的,他不具備普通指標的行為(無 * 、->)。

他用於觀測shared_ptr的資源使用情況,可通過其lock()函式獲取乙個可用的shared_ptr物件。

shared_ptr:

引用計數的智慧型指標他是乙個類(其內部由 指向物件的指標ptr,引用計數的指標組成shared_ref_cnt)。

其用於管理 擁有多個擁有者的記憶體空間 的生命週期而設計。可以有多個shared_ptr類物件指向乙個指標ptr。

每當其被乙個shared_ptr指向的時候 shared_ref_cnt計數加一,當減少時反之,當計數為零時ptr釋放其所指物件。

當weak_ref_cnt計數為0時ptr才釋放。

auto:

可以根據語義實現型別推導,在編譯前期實現,其與正常編譯一樣需要判斷左右型別匹配,所以不影響編譯執行速度,自動判斷型別,方便使用者。

decltype:

獲取表示式的型別。

預設函式行為(default,delete)

c++會對類設定預設的構造、析構、拷貝、賦值函式,但有時我們不需要。

delete:取消建立他的預設建構函式。

default :使用他的預設建構函式。

建構函式(委託、繼承建構函式using)

用於提公升類構造效率。

委託:本質簡化**,做到復用其他建構函式的**目的。

class

base

base

(int value)

:base()

};

繼承: 因原先 繼承需要將引數傳到父類中完成構造,效率低下。

struct aa(

double d,

int i)a(

float f,

int i,

const

char

* c)

//...等等系列的建構函式版本

};struct b:a

控制虛函式過載: override:顯示宣告對虛函式過載 final:顯示終止對虛函式的過載使用。

std::array:

儲存在棧中,比vector存在堆裡效能更高。

會在編譯時建立乙個固定大小的陣列,不能被隱式轉換為指標型別使用。

定義時只需指定其型別和大小。

std::forward_list

使用與list基本類似

底層是乙個單向鍊錶,插入時間為o(1) 。

不支援快速訪問、和size() 函式

當不需要雙向迭代的時候,其比list空間利用率更高

無序容器unordered_map / unordered_set

無序容器中,不進行排序,內部有雜湊表實現,插入、查詢時間o(1)。

雜湊map查詢效率更高,儲存效率略低(建表的額外開銷)

unordered_set同unordered_map一樣

是乙個固定大小不同型別值的集合

使用核心函式:

make_tuple:構造元組

get:獲取元組某個位置的值

tie:元組拆包

tuple_cat:合併兩元組

thread:

c++11執行緒類,使用方法與boost介面一樣,並且解決了boost中構造引數限制問題。

atomic:

c++11封裝的原子資料型別,不會發生資料競爭,不用進行資源枷鎖。

condition_varable:

用於控制線程休眠、重新啟動的 類

函式wait(lck) 休眠等待 函式notify_all() 休眠結束

用於有迭代器的容器,簡化寫**。

匿名函式:[capture list] (parameter list) -> return type

[capture list]捕獲列表,區域性變數:

[ ] 空

[=] 外函式的所有值得copy

[&] 外函式的所有引數的引用

[&,=x] 前預設捕獲,後顯示捕獲

(parameter list) 傳參列表

-> return type 返回型別

函式體正規表示式描述了一種字串匹配的模式。一般使用正規表示式主要是實現下面三個需求:

檢查乙個串是否包含某種形式的子串;

將匹配的子串替換;

從某個串中取出符合條件的子串。

c 11的新特性

1 型別說明符auto 2.decltype提取型別 int a 0 decltype a b b 10 cout b endl 3.基於範圍的for迴圈 4.虛函式的override和final指示符 final修飾類 類無法被繼承 final修飾虛函式 虛函式不能被重寫 override就是輔助...

C 11的新特性

c 11提供在類中定義類的資料成員,可以直接在成員之後新增 預設值 當通過編譯器自動生成的預設建構函式初始化物件時,對應的資料成員就會被初始化成對應的預設值。class test int main 在c 98中,陣列可以使用 來進行初始化,對自定義型別是不可以的。在c 11中,的使用範圍變得更廣,可...

C 11的新特性

1.auto關鍵字 編譯器可以根據初始值自動推導出型別。但是不能用於函式傳參以及陣列型別的推導。2.nullptr關鍵字 nullptr是一種特殊型別的字面值,它可以被轉換成任意其它的指標型別 而null一般被巨集定義為0,在遇到過載時可能會出現問題。3.智慧型指標 c 11新增了std share...