我有這樣的代碼在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