c++11標準為c++程式語言的第三個官方標準,正式名叫iso/iec 14882:2011 - information technology -- programming languages -- c++。在正式標準發布前,原名c++0x。它將取代c++標準第二版iso/iec 14882:2003 - programming languages -- c++成為c++語言新標準。auto的自動型別推導,用於從初始化表示式中推斷出變數的資料型別。從這個意義上講,auto並非一種「型別」宣告,而是乙個型別宣告時的「佔位符」,編譯器在編譯時期會將auto替換為變數實際的型別。c++11是對目前c++語言的擴充套件和修正, c++11不僅包含核心語言的新機能,而且擴充套件了c++的標準程式庫(stl) ,併入了大部分的c++ technical report 1(tr1) 程式庫(數學的特殊函式除外)。
c++11包括大量的新特性:包括lambda表示式,型別推導關鍵字auto、 decltype,和模板的大量改進。
通過auto的自動型別推導,可以大大簡化我們的程式設計工作:
#include #include #include using namespace std;
double foo() {}
void func(vector& tmp)
}int main()
str;
auto str1 = str; // str1的型別是struct m
auto z; // err, 無法推導,無法通過編譯
z = x;
return 0;
}
注意點:
void fun(auto x =1) {} // 1: auto函式引數,有些編譯器無法通過編譯
struct str
;int main()
; return 0;
}
decltype實際上有點像auto的反函式, auto可以讓你宣告乙個變數,而decltype則可以從乙個變數或表示式中得到其型別,如下:
#include #include #include using namespace std;
int main()
enum flag; // 匿名的列舉變數
decltype(flag) tmp = ok;
return 0;
}
返回型別後置:在函式名和引數列表後面指定返回型別。
int func(int, int);
auto func2(int, int) -> int;
templateauto sum(const t1 & t1, const t2 & t2) -> decltype(t1 + t2)
template auto mul(const t1 & t1, const t2 & t2) -> decltype(t1 * t2)
int main()
C 11中新特性之 unordered map
2015 03 09 22 17 42 閱讀 0 收藏 0 點我收藏 標籤 des class com使用 si資料 itla unordered map和map類似,都是儲存的key value的值,可以通過key快速索引到value。不同的是unordered map不會根據key的大小進行排序...
C 11新特性之POD型別
pod plain old data 是c 中非常重要的乙個概念,用來描述乙個型別的屬性其中plain表示這個型別是個平凡的型別,old表示其與c的相容性。c 11中將pod劃分為兩個基本概念 平凡的 trival 和標準布局 standardlayout 什麼是平凡性呢?通常乙個平凡的類或者結構體...
C 11新特性學習
lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...