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