Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 整数合计的计数频率_C++ - Fatal编程技术网

C++ 整数合计的计数频率

C++ 整数合计的计数频率,c++,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)) {

我需要在一个二进制文件中一起计算不同整数的频率,我怎么做?我不想转换成字符串,因为那样会减慢我的程序速度。。我想

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();

numcols==2正确。

一个选项可能是将
映射
使用
s作为键。这样,您就可以从成对的
uint32\t
s显式映射到它们出现的频率。

我假设
numcols==2
?另外,您能否明确说明您正试图做什么?也就是说,你能更清楚地知道所有这些对象是什么吗?你的意思是你想计算你连续看到每对整数的次数吗?你想要重叠的一对吗?也就是说,如果文件包含数字1、2、3、4,那么您是否也在计算这对数字(2、3),或者仅仅是(1、2)和(3、4)?如果我想将其缩放为三个、四个等呢。。。类似于(1,2,3,4)和(3,8,7,1)的频率?您可能希望将boost::tuple作为std::pair的泛化。它将在新的C++标准中,如果你使用正确的编译器,你应该免费得到它。
1 2
1 2
7 3
8 14
8 14
8 14

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