我有一个我必须忽略的数组,删除所有重复
的数字,
例如 1 2 4 3 3 0 1 2 0
我所做的是检查数字并尝试像 \0
和 NULL
这样的东西,但它们都给出 0 的值,所以这不是解决方案。那么有没有办法让索引为空或忽略它呢?这些数字必须是随机的,所以我不能声明类似
array[i]=123;
if(array[i]==123) dont_print_out();
最佳答案
如果您的数组是一个普通的 C++ 数组,您将无法“删除”项目。 您唯一的解决方案是将剩余的项目移到左侧。
如果你的数组是一个std::vector
,你可以使用erase
函数。然而,由于 vector 中底层数据的结构,你做的基本上和以前一样:效率低下。
如果您想有效地移除序列中随机放置的项目,请考虑使用另一种容器,例如 std::list
。
最后,为了实现您的目标,请查看 std::set
或 std::unordered_set
。这些容器可确保您的元素独一无二。
关于c++将数组索引声明为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068394/