【发布时间】:2019-03-23 05:19:07
【问题描述】:
所以,我正在创建一个表示任意大小矩阵的类,并且我想编写一个函数,将内部向量“导出”到二维数组。
我发现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 需要成为 auto& 而不是 auto,因为“防止 vec 成为临时副本非常重要。”
但是,在 Visual Studio 中,我总是收到错误消息“没有重载函数 push_back 的实例与参数列表匹配...参数类型为 (const double*)”
所以,我的问题是,如何在不将 auto& 更改为 auto 的情况下使其工作?另外,如何将其扩展到 3 维?
【问题讨论】:
-
更大的问题:
ptrs.data()在ptrs被销毁时是一个悬空指针,当a_data()返回时会发生这种情况。