学习网址:
建议auto在什么情况下使用:
1.使用 auto 定义迭代器
2.auto 用于泛型编程
1.auto用在迭代器的例子
//auto用在迭代器的例子
int test_auto_iterator()
{
vector< vector<int> > v;
vector<int> number ={1,2,3};
v.push_back(number);
//vector< vector<int> >::iterator i = v.begin();
auto it = v.begin();
cout<<"size="<<it->size()<<endl;
cout<<it->data()<<endl;
//vector<int>::iterator it_number=number.begin();
//auto 代替上面的vector<int>::iterator
//auto it_number =number.begin();
for(auto it_number:number)
{
cout<<it_number<<endl;
}
return 0;
}
2.
测试例子:
#include <signal.h>
#include <string>
#include <sstream>
#include <iostream>
#include <memory>
using namespace std;
int test_auto_decltype()
{
/*
auto n = 10; //int
auto f = 12.8; //double
auto p = &n; //int*
auto url = "http://c.biancheng.net/cplus/"; //char*
*/
int x = 0;
auto *p1 = &x; //p1 为 int *,auto 推导为 int
auto p2 = &x; //p2 为 int*,auto 推导为 int*
auto &k1 = x; //k1 为 int&,auto 推导为 int
auto k2 = k1; //k2 为 int,auto 推导为 int
const auto n = x; //n 为 const int ,auto 被推导为 int
auto f = n; //f 为 const int,auto 被推导为 int(const 属性被抛弃)
const auto &r1 = x; //r1 为 const int& 类型,auto 被推导为 int, // 实测是int&
auto &r2 = r1; //r1 为 const int& 类型,auto 被推导为 const int 类型 // 实测是int&
int a = 0;
decltype(a) b = 1; //b 被推导成了 int
decltype(10.8) c = 5.5; //x 被推导成了 double
decltype(c + 100) y; //y 被推导成了 double
return 0;
}
int main()
{
test_auto_decltype();
return 0;
}
运行结果: