【发布时间】:2014-04-23 04:50:40
【问题描述】:
所以,这可能听起来令人困惑,但我正在编写一个素数分解方法,并且我试图找出某个数字在向量中出现的次数。为此,我制作了一个包含唯一值的集合(所以我知道向量中要计算哪些数字/多少个数字),但我无法将它们放在一起。
我知道我可以使用迭代器对向量进行计数,但我不知道怎么说,“嘿,检查集合中位置一的数字。”我查看了资源,但他们只使用 find,我假设我不知道 vector<int> 中的数字是什么,或者索引是数字变化的位置(如果有的话)。
我想我可以遍历集合,但这样做会给我所有数字的计数,我将它们存储在另一个向量中。我的意思是,我想我可以将计数向量分成两半,但这是一种偷工减料,我宁愿第一次正确编码,也不愿想出技巧来获得我想要的结果,因为我在之前编写的方法中使用了后者,但它只在某些时候有效。
【问题讨论】:
-
我将使用数字的 std::map 来代替集合,并在迭代向量时继续构建它。
-
你为什么首先使用矢量?你需要保持插入顺序吗?如果插入的顺序不重要,请使用 map
为每个数字保存一个计数器,计数器将是值(您将增加而不是插入向量),数字将是键. -
@idanuda 我真的不需要,但这是我想到存储所有因素的第一种方式。
标签: c++ vector count iterator set