有一个函数需要float**
个参数。
我在std::vector<std::vector<float>>
类型的变量中有值。
是否可以在不分配临时float*[]
的情况下进行此类转换?
答案 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}}。