所以,这可能听起来令人困惑,但我正在编写一个素数分解方法,而我试图找出某个数字出现在向量中的次数。为此,我创建了一个包含唯一值的集合(因此我知道向量中要计算的数字/数量),但我无法将它们组合在一起。
我知道我可以使用迭代器来计算向量,但我不知道该如何说,&#34;嘿,检查集合中第一个位置的数字。&#34;我查看了资源,但他们只使用了find,我假设我不知道vector<int>
中的数字是什么,或者索引是数字变化的位置(如果有的话)一样)。
我想我可以遍历整个集合,但这样做可以得到所有数字的计数,我将其存储在另一个向量中。我的意思是,我想我可以将计数向量分成两半,但那是一种偷工减料的方式,而且我只是在第一时间对它进行编码,而不是提出一些技巧。得到我想要的结果,因为我在之前编写的方法中做了后者,有时只能工作。
答案 0 :(得分:0)
所以,如果是这种情况,你不需要Set
进行计数,只需迭代地图 -
void SomeClass::Insert (int newNumber)
{
if (m_map.count (newNumber) > 0)
{
m_map[newNumber]++;
}
else
{
m_map[newNumber] = 1;
}
}
void SomeClass::Count ()
{
for (map<int,int>::iterator it=m_map.begin(); it!=m_map.end(); ++it)
{
std::cout << "the number: "<< it->first << " apears " << it->second << "times" <<'\n';
}
}