我有这样的代码在Python:将Python列表理解转换为C++?
def f(x,n): return [u(k) for k in range(1,n) if u(k) > 0]
但我不知道如何在C++翻译。那么我可以做到这一点,但我不知道如何以一种好的方式返回一个数组,如果我应该使用一个数组或向量。 此外,我想知道它可以如何压缩。 当然,我认为功能u
是为所有k > 0
定义的。
我有这样的代码在Python:将Python列表理解转换为C++?
def f(x,n): return [u(k) for k in range(1,n) if u(k) > 0]
但我不知道如何在C++翻译。那么我可以做到这一点,但我不知道如何以一种好的方式返回一个数组,如果我应该使用一个数组或向量。 此外,我想知道它可以如何压缩。 当然,我认为功能u
是为所有k > 0
定义的。
由于您不知道要返回的数据的最终大小,因此最好使用vector
; array
适用于编译时已知的固定大小。
这里是你如何可以实现它:
std::vector<decltype(u(0))> f(int n)
{
std::vector<decltype(u(0))> vec;
for (int k = 1; k < n; k ++)
if (u(k) > 0)
vec.push_back(u(k));
return vec;
}
,以便返回vector
上的回报不会复制任何像样的编译器将优化该代码。
你应该总是使用一个向量。你只是回来,没有好的方式或坏的方式来做到这一点。至于以紧凑的方式做事,你必须自己尝试一下。 –
x从未在函数的主体中使用。而k来自任何地方...... x和k是同一个变量吗? – Jurlie
@Jurlie:'k'来自'range(1,n)',但是你说的'x'没有被使用。 – martineau