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

c++ read matrix of unkown size

这是我的问题,我需要从文本文件中读取某个 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 对行尾有什么反应? 或者更好的是,当我完成一行时如何增加其中一个索引? 谢谢 ;)

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

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

如果可以的话,如果你正在做线性代数,你应该尝试使用已知的库来获得方便的 Matrix 类 和 Eigen、Armadillo 等方法。