C++11新特性

1.第一个好用的新东西就是关键字auto;

auto就是自动推导你定义那个东西的类型

2.关键字tuple

类比pair,pair只能定义两个数据,tuple可以定义多个数据类型,非常好用。

auto my=make_tuple("999","888","777");

cout<<get<0>(my);   

3.统一初始化

如:int a[4] {1,2,3,3}

vector<int> {....}

即所有的类型都可以在后面加一个{}进行初始化

4.遍历

for(decl:coll)

{

statement;

}//其中decl是元素,coll是容器,具体例子看下面代码

​

for(int i: {2,3,5,7,9,13})
{
    cout<<i<<endl;
}


vector<double>vec;
...
for(auto elem : vec)
{    
    cout<<elem<<endl;
}


for(auto& elem : vec)
{
    elem *=3;
}


​

 

值得注意的是 上面代码段中一个是 auto elem 和auto& elem这两个的区别,前者只是把容器的值复制过来进行遍历,并不能改变其值,而后者&类似与指针,可以改变其值,简单来记的话,建议加上&。

5. variadic template

数量不定的模板参数,重量级的新特性。

一个简单的应用:假设让你设计一个函数,函数的参数可以是任意类型,参数可以任意多个,利用这个新特性就可以很好的设计出来。

void print()
{
}

template<typename T,typename... Type>
void print(const T& firstArg,const Types&... args)
{
    cout<<FirstArg<<endl;
    print(args...);
}

读懂上面代码,首先需要理解模板的概念,然后c++中的关键字...代表的是其他所有元素。

print(7.5,"hello",42);

运行结果就为

7.5

hello

42

6.Alias Template

化名模板

就如字面意思,给模板起一个别名

using vec=vector<T,MyAlloc<T>>;

//上面一行代码的意思就是给vector起了个别名vec

以后就可以这样用了

vec<int> coll;

7.lambda

仿函数

auto l=[]{
    cout<<"hello lambda"<<endl;
};

l();//作用就是打印“hello lambda”

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值