有一個函數需要float**
參數。 我有一個變量的值爲std::vector<std::vector<float>>
。將std :: vector <std :: vector <float>>轉換爲float **
是否可以在不分配臨時float*[]
的情況下進行這樣的轉換?
有一個函數需要float**
參數。 我有一個變量的值爲std::vector<std::vector<float>>
。將std :: vector <std :: vector <float>>轉換爲float **
是否可以在不分配臨時float*[]
的情況下進行這樣的轉換?
不是直接的,但您不必從「內部」向量複製數據。相反,您可以創建一個指向每個內部向量的data()
屬性的指針數組。
您必須手工完成轉換,方法是將float**
的值填入vector<vector<float> >
並使用兩個循環。
在任何情況下您都必須分配內部float*
。
這將工作:
std::vector<std::vector<float>> source;
std::vector<float*> target(source.size());
for (int i = 0; i < source.size(); ++i)
target[i] = &*source[i].begin();
正如你看到的,你不需要複製內部std::vector<>
秒,但你需要重建外。 A std::vector<>
保證其成員的線性存儲(意味着它與C數組兼容),因此它適用於內部向量。
是的。你有什麼嘗試?這只是分配內存然後使用2 for循環並遍歷兩個向量的問題。 – ApplePie