2012-10-20 977 views

回答

3

不是直接的,但您不必從「內部」向量複製數據。相反,您可以創建一個指向每個內部向量的data()屬性的指針數組。

0

您必須手工完成轉換,方法是將float**的值填入vector<vector<float> >並使用兩個循環。

在任何情況下您都必須分配內部float*

2

這將工作:

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數組兼容),因此它適用於內部向量。

+0

爲什麼你不用'std :: vector'作爲'target'? – avakar

+0

@avakar你是對的,你應該使用std :: vector作爲目標以及 – mauve

+0

觀察邊緣情況 - 如果任何內部向量是空的,那麼'&* source [i] .begin()'具有未定義的行爲。但是由於該函數需要'float **',它很可能期望矩形數據,所以希望這是提問者所擁有的。 –

相關問題