从std :: vector <std :: vector <float>&gt;转换浮动** </std :: vector <float>

时间:2012-10-20 19:48:47

标签: c++ vector

有一个函数需要float**个参数。 我在std::vector<std::vector<float>>类型的变量中有值。

是否可以在不分配临时float*[]的情况下进行此类转换?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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<>,但您需要重新创建外部std::vector<>。 {{1}}保证其成员的线性存储(意味着它与C数组兼容),因此它适用于内部向量。

答案 2 :(得分:0)

您必须手动进行转换,方法是将float**的值vector<vector<float> >填充为float*

在任何情况下,您都必须分配内部{{1}}。