我有一个整数向量。其中包含数字。我想计算此向量中每个数字的出现次数。那么这样做的最佳方式是什么。由于我是Vector的新手,请告诉我任何最佳方法。
答案 0 :(得分:3)
您可以使用由std :: unordered_map实现的哈希表。例如:
#include <unordered_map>
#include <vector>
void count_occurrence(std::unordered_map<int,int>& m, std::vector<int>& v){
for (auto itr = v.begin(); itr != v.end(); ++itr){
++m[*itr];
}
}
//...somewhere else
//you already have std::vector v filled
std::unordered_map<int,int> m;
count_occurrence(m, v);
//print the number of occurrences of 1
std::cout<<m[1]<<std::endl;
答案 1 :(得分:1)
您可以对矢量的元素进行排序
通过向量迭代
将当前整数存储为x
将当前索引与之前的索引进行比较。
如果它们相等,则将另一个变量增加为f
如果它们不相等,请再次开始循环
这当然不是一步一步的指示,但它包含足够的方向让你前进
答案 2 :(得分:1)
查找数组/列表/向量/等中存储的许多整数的模式。其中 v 是DS,而 num 是整数的数量。 您可以使用以下技术: 简单而清醒。
i = 0;
int m = 0, mode, c = 0, nc = 0;
while(i<num)
{
c = 0;
nc = v[i];
c++;
i++;
while(nc == v[i])
{
c++;
i++;
}
if(m < c)
{
m = c;
mode = nc;
}
}