标签:写法 auto https any decltype -- 返回 推断 ios
nullptr比NULL更安全。当需要使用NULL时,应使用nullptr代替。
自动推断变量类型,常用于迭代器。
自动推断表达式类型。decltype(表达式)
int x = 1;
int y = 2;
decltype(x+y) z;
用于模板类的后置返回类型。
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;
}
基于范围的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
标签:写法 auto https any decltype -- 返回 推断 ios
原文地址:https://www.cnblogs.com/chendeqiang/p/11612953.html