【发布时间】:2021-06-25 14:04:10
【问题描述】:
我想创建按对象属性(物理大小)排序的对象链接列表;但到目前为止,我似乎必须自己编写代码...... 这些列表很短,通常每个都有十几个节点;但我可能有多达一千个列表;所以我负担不起使用 std::map 的额外重量。事实上,我对单链表很满意。 但我需要节点不仅仅是一个值。 我的对象中的关键值很少会改变;然而,元素必须从一个列表中出来并经常移动到另一个列表中。 ((实际使用:一个四边形一个列表,在四叉树中(如碰撞检测等);对象按大小排序,因为较大的对象数量较少但需要从较大的范围内快速挑选,所以它们应该来在列表中排名第一。))
但是我发现的每个使用 std::list 维护排序列表的示例都使用整数列表作为示例;但这不是很有用;我所拥有的是具有一个值成员进行排序的对象。
我正在考虑使用lower_bound找到插入点,然后插入对象;但是 lower_bound 迭代器需要一个开始、结束和一个普通值作为第三个参数;我看不到可以指定使用对象的特定成员进行排序的机制。
当然,我可以定义一个转换运算符,
my_object_type::int(){ return sortby; }
那行得通吗?有没有更好的办法?
【问题讨论】:
标签: key-value stdlist lower-bound