0

有一个接受float**参数的函数。我有一个类型变量的值std::vector<std::vector<float>>

是否可以在不分配临时地址的情况下进行这样的转换float*[]

4

3 回答 3

4

不是直接的,但您不必从“内部”向量中复制数据。相反,您可以创建一个指向data()每个内部向量属性的指针数组。

于 2012-10-20T19:52:30.760 回答
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<>s,但需要重新创建外部。Astd::vector<>保证其成员的线性存储(意味着它与 C 数组兼容),因此它适用于内部向量。

于 2012-10-20T19:52:47.157 回答
1

您必须手动进行转换,用两个循环填充您float**的值。vector<vector<float> >

float*无论如何,您都必须分配内部。

于 2012-10-20T19:52:36.440 回答