基于C++11范围的自动循环(按值、引用和指针)
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*
数组并将其视为一个值(即在循环的范围内执行常规auto
)
#include <iostream>
struct A {
void fun() { std::cout << "fun n"; };
};
int main() {
A* a[2];
// Pointer
for (auto x : a) {
x->fun();
}
}
实时示例
相关文章:
- 按值捕获引用时出现非常量
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 棘手的按值传递和按引用递归问题传递
- c++ lambda:柯里和函数:使用按值捕获与按引用捕获返回不同的结果
- 不同于按值传递和常量引用传递的程序集
- C++ 获取函数在常量引用中按值返回的结果
- 按值传递变量与按引用传递变量具有相同的结果
- 为什么按值传递QStringView比引用常量更快?
- 获取 std::函数以推断按引用传递/按值传递
- C++/11 auto 关键字是在更有效时推导参数进行按引用传递,还是始终按值传递?
- 使用 enable_if 在按值传递与按引用传递之间更改函数声明
- 按值和引用传递指针之间的区别?
- C++按引用传递还是按值传递?
- 可移动但不可复制的对象:按值传递还是按引用传递?
- 按值与右值引用返回
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 按值/引用传递定义的实现还是行为明智
- 按引用调用还是按值调用?
- 在C++函数参数中使用 & 运算符:按值引用传递
- c++中的指针按值/引用传递