因此,我正在创建一个表示任意大小矩阵的类,并且我想编写一个将内部Vector“导出”到二维数组的函数。
我发现some code似乎可以满足我的要求。这是我班上代码的样子:
// Export matrix to array
double** Matrix::a_data() const
{
vector<double*> ptrs;
for (auto& vec : mat)
{
ptrs.push_back(vec.data());
}
return ptrs.data();
}
其中 mat 是向量
相关帖子指出, vec 必须是自动&而不是自动,因为“防止vec成为临时副本非常重要。”
但是,在Visual Studio中,我总是收到错误消息:“没有重载函数push_back的实例与参数列表匹配...参数类型为(const double *)”
所以,我的问题是,如何在不将auto&更改为auto的情况下使它起作用?另外,如何将其扩展到3个维度?
答案 0 :(得分:1)
您遇到了<?php
$s_balance = $_POST('s_balance');
$i_rate = $_POST('i_rate');
$fee = $_POST('fee');
$vat = $_POST('vat');
// perform your insertion and echo result you want
?>
问题。
假设const
的类型为mat
,则函数中的std::vector<std::vector<double>>
的类型为vec
。 std::vector<double> const&
对象的data()
成员函数返回const
,而不是常规指针。
因此,您需要使用:
const*
但是,然后使用
vector<double const*> ptrs;
将引起更大的问题。 return ptrs.data();
是函数局部变量。函数返回时将销毁它。因此,返回的指针将是悬空指针。
克服该问题的选项。
ptrs
。std::vector<double const*>
的动态数组并返回它。我强烈推荐第一种选择。