计算整数的频率

时间:2011-01-14 02:17:06

标签: c++

我需要在二进制文件中统计不同整数的频率,我该怎么做?我不希望转换为字符串,因为这会减慢我的程序..我想......

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正确。

1 个答案:

答案 0 :(得分:2)

一个选项可能是map使用pair<uint32_t, uint32_t>作为键。这样,您就可以明确地将uint32_t s对映射到它们出现的频率。