gpt4 book ai didi

c++ - 基于范围的for循环通过非常量文字c++

转载 作者:行者123 更新时间:2023-12-04 16:38:18 25 4
gpt4 key购买 nike

编译器上下文:我正在使用 GDB v8.3 Ubuntu 和选项 g++ -Im -O2 -std=c++0x 进行编译。

我经常需要为两个或三个对象完成一些循环,所以我使用包含乱码的基于范围的 for 循环将表达式包装起来。

在 Python3 中,这看起来像:

a = [1,2,3]
b = [4,5,6]

for v in (a,b):
func(v)

在 C++ 中,这显然不是那么简单。据我所知,使用 {a,b} 创建某种类型的初始化列表,因此转换无法正常工作。在我的尝试中,我遇到了这种情况,但不明白我如何正确地通过引用传递并使其可变,因为我的编译器提示这必然是常量。

vector<int> a {1,2,3};
vector<int> b {4,5,6};

for(auto& v: {a,b}) // error non-const
func(v);

最佳答案

根据您的 python 程序,您似乎想要遍历所有 vector ,但对每个 vector 都有一个可变引用。您可以使用指针来做到这一点:

for(auto *v: {&a, &b})  // iterate over pointers to the vectors
func(*v); // dereference the pointers to get mutable
// references to the vectors

这是一个 demo .

关于c++ - 基于范围的for循环通过非常量文字c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65965238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com