c ++读取未知大小的矩阵

时间:2015-11-27 10:09:03

标签: c++ file matrix size sparse-matrix

这是我的问题,我需要从文本文件中读取一个int的某个矩阵,而不知道它的大小

假设例如:

" matrix.dsv"

  

1,0,1,0,0,0,1,0
  0,1,1,1,1,1,1,1
  0,0,0,0,0,0,0,0
  0,0,0,1,0,0,0,0

有没有办法知道矩阵的大小而不导入它?

由于我会根据稀疏度选择不同的记忆方式(矢量,稀疏矩阵,全矩阵),是否还有一种计算非零元素的方法?

非常感谢(对于这个蹩脚的问题感到抱歉,我对管理文件非常陌生!)

编辑: 谢谢投币! 最后一个问题,cin如何对线的末端做出反应? 或者更好的是,当我完成一行时,如何增加其中一个索引? 谢谢;)

1 个答案:

答案 0 :(得分:0)

不幸的是,您必须阅读该文件才能知道矩阵的大小,除非您在文件名或文件开头有信息。

问题有点宽泛 std::vector应该是可行的方法,因为您可以动态添加push_back()的元素用于稀疏或密集存储。更喜欢扁平线性(一维)存储 处理文件应该是一次通过,你逐个元素读取,检查并添加到计数器,如果它是零 到达文件末尾并知道矩阵的大小时,您可以重新排列数据。

如果可以,你应该尝试使用已知的库来获得方便的矩阵类和方法,例如Eigen,Armadillo,如果你正在进行线性代数。