C++ auto

  1. auto:type inference(类型推测)auto d = 5.0 , auto sum = add(5, 6) 等。

    英文参考:learn cppcpp referenceacodersjourney

    • auto 最主要用作代替冗长的变量声明:(since c++11)
  for(std::vector<std::string>::iterator it = vec.begin(); it != vec.end(); it++){
  }
  // 可以用下面简练的形式
  for( auto it = vec.begin(); it != vec.end(); it++ ){...}
  // 甚至这样, 注意e不是iterator是element
  for ( auto e : vec){ cout << e;}
  • auto声明变量
  auto i = 0, *p = &i; // 编译器最后将auto替代为int
  auto i = 10, j = 'a'; // ERROR, auto不能推测为一种类型

  int a = 10, vec[3] = {1, 2, 3}
  auto &b = a; //int &
  const auto c = a; //const int
  auto v1 = vec; // v1 is "int *"
  auto& v2 = vec; // v2 is "int [3]"
  • 后置返回类型(trailing return type syntax, c++11)
  auto get_max(int a, int b) -> int{} // 此时auto并不推断类型,这只是将返回类型后置
  • 推断函数返回类型(c++14)
  auto get_max(int a, int b){} // 注意这里不是后置返回类型,这里是根据函数参数推断返回类型
  auto get_max(auto a, auto b){} 
  // ERROR,auto不能在普通函数参数处使用(在lambda和template函数中可用, c++14)
  • 与lambda搭配使用(c++14)
  auto my_sum = [](int a, int b) { return a + b;};
  my_sum(2, 3);
  //相当于下面, std::function (在<functional> 头文件,c++11)
  std::function<int(int, int)> my_sum2 = [](int a, int b) { return a + b;};
  my_sum2(2, 3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值