【问题标题】:C++ store vector in array during loopC ++在循环期间将向量存储在数组中
【发布时间】:2016-10-21 18:33:25
【问题描述】:

您好,我是 C++ 新手,正在尝试用 Matlab 做一些很容易做到的事情。我有一个计算向量的 for 循环。然后我想存储这个向量,以便我可以在循环之外访问它。

for(ii=0; ii < numObs; ii++} {
    someVector = ...
    someMatrix[ii][:] = someVector
}

someMatrix[ii][:] 当然不起作用,但这就是我想做的。任何帮助表示赞赏,谢谢!

澄清:someVector 是一个 1xn 元素向量,每次在循环中计算。我只是想将它存储在矩阵或数组中(不确定是什么),以便我可以调用 someMatrix[ii] 并取回向量。

【问题讨论】:

  • 向量与矩阵不同。请说明您是否希望使用 matrixvector 的某些实现。
  • 仅供参考,我可以建议查看 Eigen。优秀的线性代数库,应该对 Matlab 用户友好。
  • 还可以查看Armadillo c++ library,它的语法为deliberately similar 到Matlab。

标签: c++ matlab loops matrix


【解决方案1】:

您可能正在寻找类似的东西:

std::vector<std::vector<double>> matrix; // matrix - vector of vectors
for(int i = 0; i < numObs; ++i) {
    std::vector<double> vec = ... // your calculations go here
    // if no C++11 - don't use std::move
    matrix.push_back(std::move(vec)); 
}

这里的一个缺点是您必须在计算代码中确保每个vector 将具有相同数量的元素(上面的代码没有验证它)。

请注意,这绝对不是处理矩阵的最佳方式,我建议您查看一些专用库(boost::numeric、用于图像处理的 OpenCV、Armadillo 或其他十几个库之一)如果你想对其进行认真的计算。

【讨论】:

  • emplace_back 与此示例没有区别。 vec 已创建。
  • @Dam 我的错,它应该是std::move(想法是避免复制)。感谢您的通知
猜你喜欢
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多