更改 STL 多重集中两个相等元素的顺序

Posted

技术标签:

【中文标题】更改 STL 多重集中两个相等元素的顺序【英文标题】:Change the order of two equal elements in an STL multiset 【发布时间】:2016-05-14 12:05:19 【问题描述】:

在 C++ 中,我有一个 STL multiset<int, cmp>。我定义了一个自定义比较运算符,所以两个不同的整数仍然可以比较相等。在这种情况下,当它们相等时,如何更改集合中两个整数的内部顺序?

我读到了向多重集添加第二个值的选项,并根据我想要的顺序设置它的值,但是,这似乎相当复杂。有没有更简单的解决方案,例如按特定顺序擦除和插入这两个元素?

【问题讨论】:

A set 只接受独特的元素。如果插入 12cmp 表示它们相等,则不会插入 2。也许您正在寻找multi_set 内部顺序是什么?一个集合中不能有两个相等的元素。 是的,你是对的。多集就是我的意思,谢谢:) 【参考方案1】:

重新排序元素的唯一方法是删除一个并重新插入它。

将相等的元素插入多重集合时,添加的元素将在现有元素之后,或者您可以使用带有提示的insert 函数来控制重新插入元素的位置。

【讨论】:

以上是关于更改 STL 多重集中两个相等元素的顺序的主要内容,如果未能解决你的问题,请参考以下文章

cpp的stl有linklist吗

为啥这些 C++ STL 无序集不被视为相等?

STL - 关联容器

STL 容器

按元素频率顺序遍历多重集的最简单方法?

STL容器总结