从存储在集合中的数字计算向量中的int?

时间:2014-04-23 04:50:40

标签: c++ vector count iterator set

所以,这可能听起来令人困惑,但我正在编写一个素数分解方法,而我试图找出某个数字出现在向量中的次数。为此,我创建了一个包含唯一值的集合(因此我知道向量中要计算的数字/数量),但我无法将它们组合在一起。

我知道我可以使用迭代器来计算向量,但我不知道该如何说,&#34;嘿,检查集合中第一个位置的数字。&#34;我查看了资源,但他们只使用了find,我假设我不知道vector<int>中的数字是什么,或者索引是数字变化的位置(如果有的话)一样)。

我想我可以遍历整个集合,但这样做可以得到所有数字的计数,我将其存储在另一个向量中。我的意思是,我想我可以将计数向量分成两半,但那是一种偷工减料的方式,而且我只是在第一时间对它进行编码,而不是提出一些技巧。得到我想要的结果,因为我在之前编写的方法中做了后者,有时只能工作。

1 个答案:

答案 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';
    }
}