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

时间:2013-11-27 10:12:17

标签: c++ c++11 for-loop auto

我知道如何在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();
  }
}

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

3 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:7)

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

答案 2 :(得分:3)

我不推荐它,但是如果你坚持使用指针->语法,只需创建一个A*数组并将其视为一个值(即定期auto范围 - for循环)

#include <iostream>

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

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

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

Live Example