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学习小笔记的主要内容,如果未能解决你的问题,请参考以下文章
此应用小部件片段中所有意图 (PendingIntents) 的逻辑流
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段