更改 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>
。我定义了一个自定义比较运算符,所以两个不同的整数仍然可以比较相等。在这种情况下,当它们相等时,如何更改集合中两个整数的内部顺序?
我读到了向多重集添加第二个值的选项,并根据我想要的顺序设置它的值,但是,这似乎相当复杂。有没有更简单的解决方案,例如按特定顺序擦除和插入这两个元素?
【问题讨论】:
Aset
只接受独特的元素。如果插入 1
和 2
和 cmp
表示它们相等,则不会插入 2
。也许您正在寻找multi_set
?
内部顺序是什么?一个集合中不能有两个相等的元素。
是的,你是对的。多集就是我的意思,谢谢:)
【参考方案1】:
重新排序元素的唯一方法是删除一个并重新插入它。
将相等的元素插入多重集合时,添加的元素将在现有元素之后,或者您可以使用带有提示的insert
函数来控制重新插入元素的位置。
【讨论】:
以上是关于更改 STL 多重集中两个相等元素的顺序的主要内容,如果未能解决你的问题,请参考以下文章