C++11学习小笔记

Posted LeoTsou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11学习小笔记相关的知识,希望对你有一定的参考价值。

C++11

空格

vector<list<list> >; // C++11之前需要一个空格
vector<list<list>>;  // OK 在C++11之后 

nullptr和std::nullptr_t

// 空指针可以设置成 nullptr
void f(int);
void f(void*);
f(0);            // call f(int)
f(NULL);         // call f(int) if NULL == 0
f(nullptr);      // call f(void*) 
typedef decltype(nullptr) nullptr_t; // 所以nullptr_t就是nullptr的类型

decltype

// 用于定义变量而不必关注类型
int i;
decltype(i) a;

类型自动推导

auto a = {1,2}; // a是一个int类型,用于模板和lambda函数的返回值等复杂类型的情况

变量初始化的 标准化,全部都可以用大括号初始化变量,幕后是array结构在支撑

int val[] {1, 2, 3};
vector<int> vec{1, 2, 3};
vector<string> cites{"a", "a", "a", "a", "a", "a"};

initializer lists (值得重看)

int i;    // i有未定义的值
int j{};  // j 初始化成0
int* p;   // p有未定义的值
int* q{}; // q被初始化成nullptr

int x1(5.1);  // OK,但是x1会是5
int x2 = 5.3; // OK,但是x2会是5
int x3{5.3};  // ERROR,强制转换失败
int x4 = {5.3}; // ERROR,强制转换失败

class P {
  P(int a, int b) 
  {
    cout << a << b << endl;
  }
  P(initializer_list<int> il) 
  {
    for (auto &i :il) 
      cout << i << " ";
    cout << endl;
  }
}
P p(3, 5);	// 调用P(int a, int b)
P p{3, 5};// 调用P(initializer_list il),但是没有这个函数的时候就调用另一个构造函数了
P p{1, 3, 6};  // 调用P(initializer_list il)

int a = min{1, 3, 5};    // 原来的min版本只能求2个元素的最小值,现在可以求不限个数了

以上是关于C++11学习小笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

AngularJS的学习笔记

此应用小部件片段中所有意图 (PendingIntents) 的逻辑流

C#学习笔记——需要注意的基础知识

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段

C语言100个经典算法源码片段