使用std :: set对std :: list进行排序

时间:2010-01-22 10:03:36

标签: c++ stl

我正在向std :: list和std :: set添加两个不同的元素,我希望std :: list的排序顺序与std :: set相同。我试过的一种方法是将元素添加到std :: set时,找到该元素然后使用std :: distance(begin,found)获取该元素的索引,然后将该元素插入std :: list中的该索引。还有其他办法吗?

2 个答案:

答案 0 :(得分:4)

您应该使用std::map,将您放入集合中的数据作为关键字,将您放入列表中的数据作为值。

这样您的列表元素就会被订购。

答案 1 :(得分:0)

这太复杂了! 实际上std :: set实现为二叉树,并使用std :: less进行排序(默认情况下)。这也提供了“稳定”的迭代器,这意味着std :: set :: insert返回的迭代器在元素显式擦除之前是有效的。所以你可以把刚插入的迭代器放到std :: list中。 而且明智的经文 - std :: list也有稳定的迭代器,所以你可以将项目列入列表,但要设置迭代器。最后一种方法是覆盖std :: less