[c++11]auto和decltype

学习网址:

C++ auto类型推导完全攻略
http://c.biancheng.net/view/6984.html

C++ decltype类型推导完全攻略
http://c.biancheng.net/view/7151.html


建议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;
}


运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值