[問題] 未知行數二維陣列讀檔

作者: ericrobin   2016-03-23 21:40:58
開發平台(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
你是來問問題的還是來嘴砲的?
作者: ericrobin   2016-03-24 09:06:00
為什麼陣列是空的很屌阿??push_back 我是聽說比較沒效率 就沒再研究了@@
作者: steve1012 (steve)   2016-03-24 07:39:00
好屌你陣列是空的捏
作者: IKAFIRE (沒有)   2016-03-24 02:17:00
用push_back
作者: ericrobin   2016-03-24 02:01:00
其實沒一定要怎寫耶 你有什麼推薦的寫法嗎
作者: fatrabitree (胖兔子)   2016-03-24 01:41:00
你要這樣寫,就宣告vector的時候先給size建議你用container前都去翻一下document
作者: ericrobin   2016-03-24 00:51:00
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
麻煩請虛心求教好嗎... 感覺你沒有很認真想學...
作者: james732 (好人超)   2016-03-24 12:46:00
先用過push_back試試吧,不要用聽說的
作者: ronin728 (浪人)   2016-03-24 13:10:00
有點理工精神好嗎?"聽說"效率差?所以就沒"研究"?你連研都沒有還來說究push_back每家的實作都不大相同,但是效率不會差到拿來連這種應用場景都做不到..真的需要優化,以後再說好嗎?連做Benchmark、RTFM都懶,那用什麼工具都沒效率好嗎
作者: bibo9901 (function(){})()   2016-03-24 13:16:00
我覺得vector效率也很差
作者: ronin728 (浪人)   2016-03-24 13:20:00
我覺得std::cout的效率也很差www
作者: bben900911 (Ben)   2016-03-24 13:21:00
對阿 怎麼不用printf(ry
作者: ronin728 (浪人)   2016-03-24 13:24:00
樓上,我都用內嵌組合語言int 0x21,因為printf太慢了
作者: suwako   2016-03-24 13:39:00
等你真的有效率的需求 再來考慮效率問題好嗎
作者: bben900911 (Ben)   2016-03-24 15:38:00
洨弟輸惹QQ
作者: suwako   2016-03-24 17:10:00
你的資料量這麼大 那你需要先用std::vector::max_size()看看vector最大的容量能不能合乎你的要求 不行的話就還是用array吧
作者: ericrobin   2016-03-24 17:17:00
謝謝 這功能我會試試看 後來我用getline找出行數就順利做下去了 所以應該是沒這部分的問題但還是滿想知道該怎麼將陣列逐元素讀到最後一行自己停
作者: suwako   2016-03-24 17:27:00
你是指讀陣列還是讀檔案?
作者: ronin728 (浪人)   2016-03-24 22:48:00
檔案eof()、vector end()-1IO效率問題,用硬體讀取速度、程式讀取速度、文件大小算一下,不會差太多的話不是問題
作者: ericrobin   2016-03-25 15:10:00
我是從檔案讀的@@ ; 樓上方法我會試試 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com