开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
想要从档案读取一个二维阵列,
档案以空白为分隔, 每三段数字应该读成一列 (row)
已知的话我会
但在总列数未知的情况下, 不知道该怎么读才对
目前只能想到类似下面这样的写法,
但总会跳出: vector subscript out of range 的警告视窗而不能跑
想请问该怎么修正才是?
程式码(Code)
#include <fstream>
#include "iostream"
#include <vector>
using namespace std;
int main()
{
fstream file;
file.open("abc.txt", ios::in);
if (!file)
cout << "error! \n";
int i = 0;
vector<int> A;
vector<int> B;
vector<int> C;
while (file >> A[i] >> B[i] >> C[i]) {
i++;
}
file.close();
return 0;
}
作者:
Caesar08 (Caesar)
2016-03-24 10:09:00你是来问问题的还是来嘴砲的?
为什么阵列是空的很屌阿??push_back 我是听说比较没效率 就没再研究了@@
作者:
IKAFIRE (没有)
2016-03-24 02:17:00用push_back
你要这样写,就宣告vector的时候先给size建议你用container前都去翻一下document
iostream那个好像没差XD 继续研究中...
作者:
Caesar08 (Caesar)
2016-03-23 22:24:00#include"iostream"???参考vector::emplace_back、vector::resize
作者:
Clangpp (Clang++)
2016-03-24 12:45:00麻烦请虚心求教好吗... 感觉你没有很认真想学...
有点理工精神好吗?"听说"效率差?所以就没"研究"?你连研都没有还来说究push_back每家的实作都不大相同,但是效率不会差到拿来连这种应用场景都做不到..真的需要优化,以后再说好吗?连做Benchmark、RTFM都懒,那用什么工具都没效率好吗
作者:
bibo9901 (function(){})()
2016-03-24 13:16:00我觉得vector效率也很差
楼上,我都用内嵌组合语言int 0x21,因为printf太慢了
作者: suwako 2016-03-24 13:39:00
等你真的有效率的需求 再来考虑效率问题好吗
作者: suwako 2016-03-24 17:10:00
你的资料量这么大 那你需要先用std::vector::max_size()看看vector最大的容量能不能合乎你的要求 不行的话就还是用array吧
谢谢 这功能我会试试看 后来我用getline找出行数就顺利做下去了 所以应该是没这部分的问题但还是满想知道该怎么将阵列逐元素读到最后一行自己停
作者: suwako 2016-03-24 17:27:00
你是指读阵列还是读档案?
档案eof()、vector end()-1IO效率问题,用硬件读取速度、程式读取速度、文件大小算一下,不会差太多的话不是问题