什么是暂时*排序矢量的好方法?

dew*_*rde 11 c++ sorting vector temporary

我有一个std :: vector,我需要通过选定的算法对某些操作进行排序,但是在剩下的时间内保持其原始状态(例如,在输入时排序的项目).

显然我可以使用std :: copy来创建一个临时向量并对其进行排序,但我想知道是否有更好的方法,可能是通过时间戳输入的项目.

干杯

mon*_*res 19

您可以创建一个std :: vector来保存第一个向量的所有索引.然后,您可以根据需要对索引向量进行排序.这应该是快速的,最重要的是,并不意味着你必须复制第一个矢量(这可能更昂贵!).


Man*_*uel 5

如果您不介意一点 Boost,您可以使用 MultiIndex 库。请参阅我的这个答案,您将在其中找到一些示例代码。

基本上,它允许您保留相同数据的多个“视图”,每个视图具有不同的顺序。在您的情况下,您将能够保留“序列”视图,其中数据按插入顺序(如向量)和“排序”视图,其中数据根据某种标准排序(如地图) 。