C++ 使用按非成员值排序的对象填充容器[c+;+;]

C++ 使用按非成员值排序的对象填充容器[c+;+;],c++,sorting,containers,C++,Sorting,Containers,我正在多维向量空间中做点采样。 点被简单地实现为向量,每个条目都是对应坐标的点的值 最后我想得到的是这些示例的列表,这些示例按某个函数值排序 由于计算函数的成本可能很高,所以我只想做一次,而不是每次向容器中添加新样本时。 一个std::multiset几乎就是我想要的,但似乎只能根据固有的或重载的运算符从计算的double到vector的多重映射进行排序。如果你需要反转它,一个从矢量到双精度的映射也可以 您可以通过在多组向量的比较中存储指向要加倍的缓存向量的指针来消除double,但这似乎是不明

我正在多维向量空间中做点采样。 点被简单地实现为
向量
,每个条目都是对应坐标的点的值

最后我想得到的是这些示例的列表,这些示例按某个函数值排序

由于计算函数的成本可能很高,所以我只想做一次,而不是每次向容器中添加新样本时。
一个
std::multiset
几乎就是我想要的,但似乎只能根据固有的或重载的
运算符从计算的double到vector的多重映射进行排序。如果你需要反转它,一个从矢量到双精度的映射也可以


您可以通过在多组向量的比较中存储指向要加倍的缓存向量的指针来消除double,但这似乎是不明智的。

std::multimap
?哦,天哪,我觉得有点晚了。这似乎太明显了!谢谢;)
struct point {
    point(vector<double> pos, double val) : pos(pos), val(val) {}
    vector<double> pos;
    double val;
    bool operator< (const point & rhs) const{
        return val < rhs.val;
    };
};