按属性对多种排序特征向量的数据结构

时间:2015-07-06 14:01:02

标签: c++ sorting multidimensional-array

我需要用元组

对矢量进行排序

[   (a_ 11 ,...,a_ 1n ),     ......,   (a_ m1 ,...,a_ mn ) ]

基于属性列表及其比较运算符<或者>。 例如:首先按a_ 2 排序>运算符和a_ 57 与<操作

问题:我正在寻找一种有效执行此操作的数据结构,假设排序的发生频率远远高于向量的更新。

我目前的想法是通过添加类似于每个属性的链接列表的指针来存储每个属性的排序顺序:

例如,这个向量:

Paint myPaint = new Paint();
    int sc = canvas.saveLayer(mBlackRect.left, mBlackRect.top,
            mBlackRect.right, mBlackRect.bottom, myPaint,
            Canvas.ALL_SAVE_FLAG);
    myPaint.setColor(0xC0000000);
    canvas.drawRect(mBlackRect, myPaint);

    myPaint.setColor(Color.TRANSPARENT);
    myPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    canvas.drawRect(mTransparentRect, myPaint);
    myPaint.setXfermode(null);
    canvas.restoreToCount(sc);

将获得数据结构

0: (1, 7, 4)
1: (2, 5, 6)
2: (3, 4, 5)

编辑:

  • 在任何给定时间我只需要一个排序顺序。在我收到不同排序顺序的用户请求后,我需要尽快重新计算。
  • 增量的想法非常好,但我需要估计我需要多长时间,如果我知道应该如何做,这就更容易了。
  • 一旦我完成,我需要随机访问100个元素的组,即前100个,第二个100或元素5100-5199。

1 个答案:

答案 0 :(得分:1)

我会使用boost :: MultiIndex。 - drescherjm