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