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 等方法。
这是我的问题,我需要从文本文件中读取某个 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 等方法。