【发布时间】:2021-01-15 13:14:20
【问题描述】:
有没有办法在 c++ 中返回这样的向量(python 代码)
return [i, j]
好像是:
return {i, j}
或类似的东西,而不是事先创建一个向量,推送值然后返回该向量,就像这样
vector<int> v;
loop
loop
condition
v.push_back(i);
v.push_back(j);
}
}
}
return v;
所以你可以只返回 {i , j} 而不是 push_back 语句,
另外,如果这实际上会减少运行时间。
【问题讨论】:
-
研究
std::initializer_list。这就是它存在的原因。这个问题大约在 10 年前就解决了。要回答更多,我们需要知道loops 和condition是什么,所以现在我的 VTC 不完整。 -
您正在寻找的功能是结构化绑定。从 c++17 开始就可以使用了。
-
您的 Python 返回一个包含两个元素的列表,似乎与您所描述的内容无关。
-
@SebastianH 不,不是。结构化绑定与此无关(只是巧合地使用了相同的括号)。他们希望能够做到
return {bunch, of, values}而不是result.push_back(bunch); result.push_back(of); result.push_back(values)。他们可以使用vector从 C++11 开始的std::initializer_list的标准构造函数。但是,如果他们还想以某种模糊的方式将其与循环和条件结合起来,那可能会也可能不会,但谁真正知道问题是如何在没有上下文的情况下编写的。 -
@molbdnilo python 代码是相关的,因为它是我试图用 C++ 做的,但用另一种语言(Python)表示。