有一个接受float**
参数的函数。我有一个类型变量的值std::vector<std::vector<float>>
。
是否可以在不分配临时地址的情况下进行这样的转换float*[]
?
不是直接的,但您不必从“内部”向量中复制数据。相反,您可以创建一个指向data()
每个内部向量属性的指针数组。
这将起作用:
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 数组兼容),因此它适用于内部向量。
您必须手动进行转换,用两个循环填充您float**
的值。vector<vector<float> >
float*
无论如何,您都必须分配内部。