码迷,mamicode.com
首页 > 编程语言 > 详细

C++11新特性

时间:2019-09-30 16:25:26      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:写法   auto   https   any   decltype   --   返回   推断   ios   

1.nullptr

nullptr比NULL更安全。当需要使用NULL时,应使用nullptr代替。

2.auto

自动推断变量类型,常用于迭代器。

3.decltype

自动推断表达式类型。decltype(表达式)

int x = 1;
int y = 2;
decltype(x+y) z;

4.拖尾返回类型

用于模板类的后置返回类型。

template<typename T, typename U>
auto add(T x, U y) -> decltype(x+y) 
{
    return x+y;
}

从 C++14 开始是可以直接让普通函数具备返回值推导,因此下面的写法变得合法:

template<typename T, typename U>
auto add(T x, U y)
 {
    return x+y;
}

5.for增强

基于范围的for循环,多用于遍历容器。for(int a:vector){}
迭代器时是指针,非迭代器时是基本类型。
因此,迭代器++是地址(指针)++,基本类型++是数值++。
在顺序取值时使用基本类型,需要特殊位置取值时使用迭代器。

#include <iostream>
#include <vector>

int main() {
   std::vector<int> arr(5, 100);
   std::cout << "Start:" << std::endl;
   std::cout << "--------非引用(只读)-----------" << std::endl;
   for (auto i : arr) {
      std::cout << i << std::endl;
   }
   std::cout << "--------引用(读写)-----------" << std::endl;
   for (auto &i : arr) {
      std::cout << i << std::endl;
      i++;
   }
   std::cout << "---------测试引用输出----------" << std::endl;
   for (auto i : arr) {
      std::cout << i << std::endl;
   }
   std::cout << "--------迭代器-----------" << std::endl;
   for (auto i = arr.begin(); i != arr.end(); i++)
   {
      std::cout << *i << std::endl;
   }
   system("pause");
   return 0;
}
Start:
--------非引用(只读)-----------
100
100
100
100
100
--------引用(读写)-----------
100
100
100
100
100
---------测试引用输出----------
101
101
101
101
101
--------迭代器-----------
101
101
101
101
101
Press any key to continue . . .

参考链接:
https://blog.csdn.net/jiange_zh/article/details/79356417
https://blog.csdn.net/y396397735/article/details/79615834

C++11新特性

标签:写法   auto   https   any   decltype   --   返回   推断   ios   

原文地址:https://www.cnblogs.com/chendeqiang/p/11612953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!