C++11的内容介绍

C++11的内容介绍

初始化

{}统一进行初始化。可以进行数组初始化,变量初始化,类成员,容器初始化,可以格式化函数初始化。基本上可以使用()东西差不多相同。

容器的赋值(包括初始化)都是通过这一个类型进行实现相关的内容。

int a ={10};
int b{10};
int c[]={1,2,34,54};
int d[]{1,2,3};
int e[10]{ 0 };
  vector<int>{1,2,343,54,6};//基本上所有的容器都可以使用这个东西

声明

auto自动推导变量计算之后的相应的类型。

int a = 1;
int b = 1;
auto c = a + b;

直接获取类型变量的类型(函数的返回值也可以作为类型进行计算,但是全缺省的函数不会执行也不会返回值),使用typeid。直接表现

#include<typeinfo>

int a = 10;

cout << typeid(a).name() <<endl;

关键字decltype将变量的类型声明为表达式指定的类型,但是不会进行内容的初始化需要直接进行初始化。这里将p类型命名为duoble类型。

	int a = 10;
  duoble b = 10.1;
	decltype(a + b)p;

新容器

最好使用的容器unordered_set,unordered_map(这个之前介绍过)

forward_list单项链表容器,进行相关的操作,与其他容器的使用规则基本上相同。

引用

现在有引用的不同位置信息。左值引用和右值引用

左值引用

就是之前的进行引用,引用a的地址。

int a = 10;
int *b = &a;

上面这个就是左值引用,这里对于a的引用。

右值引用

	int a = 10;
	int &&b = a;

数值10被右值引用之后,会开辟一个独立的空间储存10。a与b分别执行这一个空间。而且右值不可以进行引用。

在这里插入图片描述

使用move进行移动右值引用之后可以被引用了,并且a的资源被放置为空。

int &b = std::move(a);

这个被使用在函数返回值的过程之中,解决出现拷贝搞砸的问题,用来节省空间。

最开始的时候c98标准开始直接返回的过程增加一个拷贝构造,c++11使用右值引用进行改造,去掉拷贝构造这一个过程。

在这里插入图片描述

使用右值引用可以解决这个问题,去掉拷贝构造这一个部分。
在这里插入图片描述

总结STL容器在c++11都支持移动构造与赋值。

完美转发

因为只要使用过之后,无论是左右值,都变成左值。但是我们需要右值的这个情况所以需要完美转发这个东西。

但是引用类型的唯一作用就是限制了接收的类型,后续使用中都退化成了左值。

可以使用int && x,进行值的接受,而且相应的值没有改变(性质不会改变)!通常用在函数接受的过程之中(函数参数过程中),让值不会被退化成为左值。

可变模版参数

在这里插入图片描述

可以使用递归进行东西的输出,…省略参数。

args有多个参数,但是不知道有多少的个数字可以使用这个方法,进行数据的处理等相关的操作!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值