C++11 筆記20150920

C++11語言新特性
1.Template 表達式內的空格
	vector<list<int> >	//OK in each C++ version
	vector<list<int>>	//Ok since C++11
2.C++11 允許你使用nullptr 取代0或者null,用來表示一個pointer(指針)指向所謂的no value.
	void f(int);
	void f(void*);
	
	f(0);		//call f(int)
	f(NULL);	//call f(int) if NULL is 0,ambiguous otherwise
	f(nullptr)	//call f(void*)
	nullptr 是一個新關鍵字,它被自動轉換爲各種pointer類型,但不會被轉換爲任何
	整型類型,它擁有類型std::nullptr,定義於<cstddef>
3.auto 自動類型推導
	vector<int> vecRoadId;
	auto iter = vecRoadId.begin(); 
	//等價於 vector<int>::iterator iter = vecRoadId.begin()
4.一致性初始化(Uniform Initialization)與初值列(InitializerList)
C++11引入了“一致性初始化”概念,意思是面對任何初始化動作,
你可以使用相同語法,也就是使用大括號。
	int values[] {1,2,3};
	std::vector<int> v {1,2,3,4,5};
	int i;		//j has undefined value ;
	int i{};	//j is initialized by 0;
	int* p;		//p has undefined value ;
	int* p{}; 	//p is initialized by nullptr;
		 
	int x1(5.3);	//OK
	int x2 = 5.3;	//OK
	int x3{5.0};	//ERROR
	int x4 = {5.3}	//ERROR
	char c1{7};		//OK	 
	char c2{99999}	//ERROR
5.Range-Based for 循環
	for(decl : coll)
	{
		statement
	}
	for(int i : {1,2,3,4,5,6})
	{
		std::cout<<i<<std::endl;
	}
	std::vector<vector> vec;
	for(auto& elem:vec)
	{
		elem *= 3;
	}
6 關鍵字 noexcept 用來指明某個函數無法或者不打算拋出異常。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章