这是我的问题,我需要从文本文件中读取一个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如何对线的末端做出反应? 或者更好的是,当我完成一行时,如何增加其中一个索引? 谢谢;)
答案 0 :(得分:0)
不幸的是,您必须阅读该文件才能知道矩阵的大小,除非您在文件名或文件开头有信息。
问题有点宽泛
std::vector
应该是可行的方法,因为您可以动态添加push_back()
的元素用于稀疏或密集存储。更喜欢扁平线性(一维)存储
处理文件应该是一次通过,你逐个元素读取,检查并添加到计数器,如果它是零
到达文件末尾并知道矩阵的大小时,您可以重新排列数据。
如果可以,你应该尝试使用已知的库来获得方便的矩阵类和方法,例如Eigen,Armadillo,如果你正在进行线性代数。