【发布时间】:2021-05-04 00:12:02
【问题描述】:
编译器上下文:我正在使用 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} 会创建某种类型的初始化列表,因此强制转换无法正常工作。在我的尝试中,我遇到了这种情况,但不明白我将如何正确地通过引用传递并使其可变,因为我的编译器抱怨这必然是 const。
vector<int> a {1,2,3};
vector<int> b {4,5,6};
for(auto& v: {a,b}) // error non-const
func(v);
【问题讨论】:
-
v应该是连接向量中的每个vector还是每个int? -
明确地说,您希望它等同于
func(a); func(b);?
标签: c++ for-loop c++11 casting constants