如何将向量向量传递给期望指向(原始)指针的函数

Aar*_*ron 0 c++ pointers vector c++11

我有一个函数接受指向double的指针:

void Foo(double ** m);  // expects a 3x3 matrix of doubles
Run Code Online (Sandbox Code Playgroud)

是否有可能,通过适当的转换和诸如此类的方法,将std :: vector的std :: vector传递给double或者std :: array of std :: arrays of double?如果是这样,有人可以解释一下吗?

std::vector<std::vector<double>> v(3, std::vector<double>(3));
std::array<std::array<double, 3>, 3> a;
Run Code Online (Sandbox Code Playgroud)

如果函数只接受指向double的指针,那么这是可能的.(通过v.data()或a.data()).但是函数接口中指针的指针让我觉得这样的转换可能是不可能的.

谢谢,

亚伦

Jar*_*d42 7

您必须通过示例构建数组:

double* a[3] = {v[0].data(), v[1].data(), v[2].data()};
Foo(a);
Run Code Online (Sandbox Code Playgroud)