【发布时间】:2018-10-21 10:05:37
【问题描述】:
假设我有以下数组:
int arr[7] = {18,16,5,5,18,16,4}
我怎样才能在一个循环中按照它们出现的顺序迭代唯一元素(18、16、5 和 4)?
我可以使用set,但是迭代的顺序会改变(set 按升序存储元素)。
解决这个问题最快的方法是什么?
【问题讨论】:
-
如果值在已知的有限范围内,您可以使用查找表。创建一个带有 bool 元素的数组,大小为最大值。使用第一个数组的值作为 bool 数组的索引。
-
std::bitset也浮现在脑海中。比bool数组稍慢,但更节省空间。 -
@zett42 我认为 bool 数组会更好,因为它也更容易实现