1. 程式人生 > >簡單介紹C++ 11新增加的8種新特性

簡單介紹C++ 11新增加的8種新特性

今天看了一本英文書,簡單做了翻譯對於c++新特性經常用但卻不知道辨別,雖然c++17都已經出來了!一起學習吧!主要:初始化,auto、nullptr等//C++ 11 新特性
#include "stdafx.h"
#include <vector>
#include<list>
#include <set>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 //第一個 書寫格式
 list<int> list1;
 vector<list<int> >  listw; //之前的
 listw.push_back(list1);
 vector < list<int>> list2; //C++11 支援種寫法
 list2.push_back(list1);
 //新增nullptr 代替NULL  0 void f(int);
 void f(void *); f(0);
 f(NULL);  //有歧義不知道呼叫上面的哪一個函式
 f(nullptr); //這個解決了這個問題呼叫f(void *) //添加了一個auto 的資料型別,支援自定義轉換資料型別
 auto i = 42;
 double f();
 auto d = f(); //就自動的變為double型別 //auto i; //wrong 必須要初始化
 static auto vat = 0.21; //新增字首也是准許的
 //auto 在遞迴是的應用 vector<string> v;
 auto pos = v.begin(); //pos = vector<string>::interaator 是不是方便多了
 //在lambada 表示式中的應用 auto L = [](int x)->bool{   //具體的使用方法可以學習lambada表示式的使用
  return x;
 }; //c++11的初始化方式
 int valures[] {1, 2, 4};
 std::vector<int> v{ 2, 4, 56, 7, 78, 8, 9, 9 };
 std::vector<string> s{ "monday", "tuesday" };
 int x1(5.3);
 int x2 = 5.3;
 //int x3{ 5.3 };//ERROR 不被潤許
 /// int x4 = {5.3}; error
 char c{ 7 };//ok
 //char c{ 999 }; //wrong out of char vector<int> v1{1, 3, 5, 6, 78, 8};
 //vector<int> v2{23,345,5,4.4}; wrong 不准許型別不一致//對於迴圈for
 vector<int> vec;
 vec.push_back(1);
 vec.push_back(2);
 vec.push_back(3);
 //利用這種方式進行遍歷替換了迭代器
 for(auto &delm: vec)
 {
  cout << delm << endl;
 } //第二種bian遍歷
 int array[] = { 1, 3, 4, 56, 7, 78 };
 for(auto &x : array)
 {
  cout << x << endl; }
 //最重要的改變
 std::set<int> coll;
 coll.insert(1);
 coll.insert(move(1)); //注意這裡,在這裡建立物件不進行重新生成一次拷貝構造,而是掉用原來已有的!//keyword contexpr
contexpr int squre(int)  //支援在編譯時期被檢測使用 return x*x;{} return 0;
}