根据存储在集合中的数字计算向量中的int

Counting an int in a vector from a number stored in a set?

本文关键字:计算 向量 int 数字 集合 存储      更新时间:2023-10-16

所以,这听起来可能令人困惑,但我正在编写一个素数分解方法,我正在试图找出某个数字在向量中出现的次数。为了做到这一点,我制作了一个包含唯一值的集合(这样我就知道在向量中要计算哪些数字/有多少数字),但我很难将其组合在一起。

我知道我可以使用迭代器通过向量进行计数,但我不知道如何说,"嘿,检查集合中第一位置的数字。"我查看了资源,但它们只使用find,我假设我不知道vector<int>中的数字是什么,也不知道索引在哪里,数字在哪里变化(如果有的话)。

我想我可以在集合中迭代,但这样做会给我所有数字的计数,我将其存储在另一个向量中。我的意思是,我想我可以把计数向量一分为二,但这有点偷工减料,我宁愿第一次就把它编码好,也不想想出一些技巧来得到我想要的结果,因为我在以前写的方法中做了后者,但它只在有时起作用。

因此,如果是这种情况,则不需要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';
    }
}