C++ C++;,指针排序向量的唯一性的自己实现
如何为指针的排序向量编写自己的std::unique实现,以便: a) 避免内存泄漏(稳定) b) 对于大型数据集,请尽快使用fast 比较具有索引[i]、[i-1]的两个相邻项,然后调用项[i]的析构函数并从向量中删除的最简单的变体看起来非常慢 我能问一下这个问题可能的解决办法吗?示例代码将非常有用:-)。谢谢 我试图用以下功能编写自己的实现。这里有两个指数。第一个表示向量中最后一个唯一的元素,第二个索引是公共索引 我正在逐元素处理数组元素,并交换元素,以便非唯一元素保留在向量的末尾。在我看来,这种一次性删除k元素的方法比重复删除一个元素要快 然后删除位于第一个索引右侧的所有元素C++ C++;,指针排序向量的唯一性的自己实现,c++,algorithm,vector,unique,C++,Algorithm,Vector,Unique,如何为指针的排序向量编写自己的std::unique实现,以便: a) 避免内存泄漏(稳定) b) 对于大型数据集,请尽快使用fast 比较具有索引[i]、[i-1]的两个相邻项,然后调用项[i]的析构函数并从向量中删除的最简单的变体看起来非常慢 我能问一下这个问题可能的解决办法吗?示例代码将非常有用:-)。谢谢 我试图用以下功能编写自己的实现。这里有两个指数。第一个表示向量中最后一个唯一的元素,第二个索引是公共索引 我正在逐元素处理数组元素,并交换元素,以便非唯一元素保留在向量的末尾。在我看来
这不是一个家庭作业,而是一个严肃的问题。我需要从点云(1E9PoT)…< P>中删除重复元素,而不是滚动自己独特算法的实现,为什么不考虑使用其中的一个?这些容器设计用于存储指向对象的指针,而不是对象本身,并自动封装处理所有资源回收所需的逻辑。使用其中一个容器,您可以轻松地使用标准的唯一算法 如果你真的想推出自己版本的独特算法,我认为你有两个指针的想法是对的,一个用于阅读,一个用于写作。算法的高级示意图是这样工作的:在索引0处启动读和写指针。然后,重复应用此步骤:
希望这有帮助 1:Stackoverflow不是为了招揽为您所做的工作。作业2.在a)中,什么是“稳定的”,您在哪里谈论内存泄漏?2.你试过什么?没有人会在这里为您编写代码。还有很多其他人……你自己有没有尝试过解决这个问题?你怎么能比O(N)更快地解决这个问题?沃利克的评论是完全恰当的。这个网站是关于你无法使用的代码的建议,不是完整的答案。谢谢你的帮助,但是。。我将代码添加到一个不使用C++ Boost…@ JNAMS的现有项目中,我刚刚更新了这个答案,包含了您将要使用的算法的草图。你能不能改天再看一下,看看这是不是你想要的?谢谢你的回答和帮助。。。