我知道如何在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();
}
}
所以我正在寻找这个约定的第三个版本。我如何在这里使用指针?
答案 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();
}
}