作者Arton0306 (Ar藤)
看板C_and_CPP
標題Re: [問題] 內含array的link list
時間Fri Dec 2 14:55:11 2011
我想解釋為什麼會有這樣的需求
情況是有一個很大的檔案要讀入(約10GB)
為了節省mem空間
我們採取了一個作法
先掃描一次整個檔案 由裡面某些數據 可以了解我們要配置多少記憶體
接著配置剛好的記憶體
然後再掃描一次檔案 這次才真的去parse 把資料按format填入
因為我覺得掃描2次似乎有點多餘,而且多花時間,才有上一篇的想法
不過現在知道free, delete的限制
似乎掃2次才是個省mem的好方法
不知有沒有人遇到類似的情形??
※ 引述《Arton0306 (Ar藤)》之銘言:
: 最近遇到一個問題
: 有一很大筆的資料要讀進來 (1G個整數)
: 如果用vector由於它會2倍2倍成長
: 有些空間會被浪費掉
: 如果用link list
: 每個node會有個pointer也造成浪費
: 所以我想可以在link list裡面放個buffer 每個buffer可存多個元素
: 這樣pointer造成的浪費就比較少
: 不知道這樣的結構是否有什麼特別的名稱?
: C++有提供類似的庫以供使用嗎?
: 順便附上我寫的程式碼
: 不過還有一些error沒清完
: http://ideone.com/9FfGJ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.192.162.252
推 shadow0326:一定要把整個檔案塞到ram裡嗎? 可否切成多個page? 12/02 15:00
→ Arton0306:為了得知恰好的配置空間 一定必須要掃完整個檔一次 12/02 15:58
→ tropical72:掃二次+1,但若檔案格式固定,在掃第一次時可能可以較快. 12/02 18:58