2011-01-14 18 views
0

我需要在一個二進制文件中統計不同整數的頻率,我該怎麼做?我不希望轉換成字符串,因爲那樣會..我想我的程序拖慢了下來...整數的計數頻率合在一起

vector<uint32_t> buf(2); 
map<uint32_t, uint32_t> mymap; 

if(file.is_open()) 
{ 
    while (file.read(reinterpret_cast<char*>(&buf[0]), sizeof(uint32_t)*numcols)) 
    { 
     for(size_t i = 0; i < numcols; ++i) 
     { 
      mymap[buf[i]]++; // **---> I need help here** 
     } 
    } 
} 
file.close(); 

我怎樣才能讓關鍵的地圖,以便它始終計算這些整數一起

是的..我連續看到整數對的次數,如多少次(1,2),或(8,14)或(7,3)。

1 2 
1 2 
7 3 
8 14 
8 14 
8 14 

1 2 --> 2 times 
7 3 --> 1 time 
8 14 --> 3 times 

numcols == 2 correct。

+0

我假設`numcols == 2`? – templatetypedef 2011-01-14 02:19:18

+1

另外,你能澄清你到底想要做什麼嗎?也就是說,你能更清楚地知道所有這些物體是什麼嗎? – templatetypedef 2011-01-14 02:23:50

回答

2

一個選項可能是讓map使用pair<uint32_t, uint32_t>作爲關鍵字。這樣你就可以明確地從uint32_t對映射到它們出現的頻率。