什么是最有效的方法删除重复和排序的向量?

什么是最有效的方法删除重复和排序的向量?

我需要一个C+向量与潜在的许多元素,擦除重复,并排序。

我现在有下面的代码,但是它不起作用。

vec.erase(
      std::unique(vec.begin(), vec.end()),
      vec.end());std::sort(vec.begin(), vec.end());

我怎么才能正确地做到这一点?

另外,首先清除重复项(类似于上面的代码)还是先执行排序更快呢?如果我首先执行排序,它是否保证在之后保持排序?std::unique被处决了?

或者还有另外一种(也许更有效)的方法来完成这一切?


蝴蝶不菲
浏览 405回答 3
3回答

尚方宝剑之说

std::unique只有在重复元素是相邻的情况下才会删除:在向量按您的意愿工作之前,您必须先对其排序。std::unique定义为稳定的,因此向量在运行UNIQUE之后仍将被排序。
打开App,查看更多内容
随时随地看视频慕课网APP