get_number()
返回一个整数。我将调用它 30 次并计算返回的不同整数的数量。我的计划是将这些数字放入std::array<int,30>
,排序然后使用std::unique
.
这是一个好的解决方案吗?还有更好的吗?这段代码将成为我程序的瓶颈。
我认为应该有一个基于哈希的解决方案,但当我只有 30 个元素时,它的开销可能会太大?
Edit我变了unique to distinct。例子:
{1,1,1,1} => 1
{1,2,3,4} => 4
{1,3,3,1} => 2
我会用std::set<int>
因为它更简单:
std::set<int> s;
for(/*loop 30 times*/)
{
s.insert(get_number());
}
std::cout << s.size() << std::endl; // You get count of unique numbers
如果您想计算每个唯一号码的返回时间,我建议map
std::map<int, int> s;
for(int i=0; i<30; i++)
{
s[get_number()]++;
}
cout << s.size() << std::endl; // total count of distinct numbers returned
for (auto it : s)
{
cout << it.first << " " << it.second<< std::endl; // each number and return counts
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)