【发布时间】:2023-04-10 18:26:01
【问题描述】:
我想使用std::list STL 容器来对包含的项目应用订单。但是,我要使用的项目是自定义typedef,由自定义类型和代表权重的double 组成。如何确保可以根据元素的权重对结果列表进行排序?
typedef std::pair<linearVariable*, double> weightedVariable;
[...]
std::list<weightedVariable> tmp;
我必须做些什么来确保列表根据对的第二部分(重量)进行排序?有没有更好的方法来维护自定义类型的顺序?在我的情况下,重量不是linearVariable 的属性,但可以计算出来。
【问题讨论】:
-
"有没有更好的方法来维护自定义类型的顺序?"如果通过“维护订单”,您的意思是您要向容器中添加新元素,然后在每个元素之后再次对其进行排序,那么是的,有一个更好的方法:
std::set。如果你只排序一次,那么vector或deque可能会比list更好,除非你做了很多从中间移除的操作。如果您只排序一次 并且 进行大量从中间移除,那么它可能在list和set之间接近。
标签: c++ list stl compare containers