如何提供std :: vector来匹配这个参数?

时间:2013-03-22 11:19:40

标签: c++ arrays vector stl parameters

如何将给定std::vector<float>传递给函数以匹配参数类型float (*parameter)[3]

该函数用3d点的坐标填充参数,这就是参数类型为3元素长数组的数组的原因。该功能由a library提供,我无法更改。

我已经初始化了矢量以覆盖足够的元素。

2 个答案:

答案 0 :(得分:4)

void f(float (*parameter)[3])
{
}

int main()
{
    vector<float> v(3);
    f(reinterpret_cast<float(*)[3]>(&v[0]));
}

答案 1 :(得分:2)

由于无法确定某个配置中std::allocator<T> float[3]是否涉及std::vector<T>,因此无法指定给定float[3]的数组。这不是找到正确的演员表,也不是正确的演员表。

问题在于,您所描述的函数之类的东西只能传递给指向实际float[3]或空指针的指针。

你可以做的唯一严格一致的事情就是将数据复制到一个真正的{{1}}变量中,并将指针传递给你的函数。