C++11新特性

Posted chendeqiang

tags:

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

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新特性的主要内容,如果未能解决你的问题,请参考以下文章

C++11新特性:19—— C++11右值引用

C++11新特性详解

C++:C++11新特性超详细版

C++11新特性

C++基础C++11的新特性

浅谈C++11新特性