A a[2];
for(auto& x_:a){
auto* x = &x_;
// code
}
C++11 range based auto for loop by value, reference, and pointer
Question
I know how to use auto keyword in for loop to iterate this array either by value or reference.
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();
}
}
So I am looking third version of this convention. How do I use pointer here?
Solution
OTHER TIPS
You don't. If you want a pointer, either write a classical for-loop, or loop by reference and take the address.
I'm not recommending it, but if you insist on using pointer ->
syntax, just make an array of A*
and treat it like a value (i.e. do regular auto
in the range-for loop)
#include <iostream>
struct A {
void fun() { std::cout << "fun \n"; };
};
int main() {
A* a[2];
// Pointer
for (auto x : a) {
x->fun();
}
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow