2012-04-30 111 views
2

我有一個持有這樣值的文本文件:閱讀後排序文本文件?

30 Text 
21 Text 
12 Text 
1 Text 
3 Text 

我想讀入一個二維數組這種方式來保持數量和文本標識在一起。一旦我這樣做了,我想按升序排序,因爲文本文件將被排序。

什麼是去這在C++的最好方式,我應該把它放在一個數組中?我的目標是從文本文件中獲得前3個最高值。有沒有一種數據結構可以更好地適應這種或更好的方式去實現它?無論如何,我可以構造文本文件,如果應該改變它,它不是一個具體的格式。

TIA

+0

看到這個問題http://stackoverflow.com/questions/10376411/how-do-you-split-a-string-read-from-a-file-into-arrays-in-c – Vijay

回答

3

如果只想前三名值,最有效的方式可以是定義三個變量(或三元素數組),讀取文件中的行由行,如果新讀線屬於前三名,放在那裏。

但是,如果你想使用的容器,我會去用std::vector和使用std::sort,假設該文件是足夠小,所有的數據裝入內存。

+1

std :: partial_sort可能會更好,如果只有前3個值是必需的。 – Benj

2

我寧願把它們放進一個std ::地圖(如果你有獨特的鑰匙。如果沒有使用一個std :: multipmap代替。),從而將數據插入到地圖上,他們會一直進行排序。如果您想獲得3個最高值,只需獲取地圖的前3項。