繁体   English   中英

C ++ 11基于范围的auto for value for value,reference和pointer

[英]C++11 range based auto for loop by value, reference, and pointer

我知道如何在for循环中使用auto关键字来按值或引用迭代这个数组。

struct A {
 void fun() {};
};

int main() {
  A a[2];

  // Value
  for (auto x : a) {
    x.fun();
  }

  // Ref
  for (auto& x : a) {
    x.fun();
  }

  // Pointer
  //for (...) {
    x->fun();
  }
}

所以我正在寻找这个约定的第三个版本。 我如何在这里使用指针?

A a[2];
for(auto& x_:a){
  auto* x = &x_;
  // code
}

你没有。 如果你想要一个指针,可以写一个经典的for循环,或者通过引用循环并获取地址。

我不推荐它,但如果你坚持使用指针->语法,只需创建一个A*数组并将其视为一个值(即在range-for循环中做常规auto

#include <iostream>

struct A {
 void fun() { std::cout << "fun \n"; };
};

int main() {
  A* a[2];

  // Pointer
  for (auto x : a) {
    x->fun();
  }
}

实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM