2016-05-14 70 views
0

在C++中,我有一個STL multiset<int, cmp>。我定義了一個自定義比較運算符,因此兩個不同的整數仍然可以相等。鑑於這種情況,如何在相同的情況下改變集合中兩個整數的內部順序?更改STL多重集中兩個相等元素的順序

我讀到了向multiset添加第二個值的選項,並將其值設置爲相應的順序,但這似乎相當複雜。有沒有更簡單的解決方案,例如擦除並按特定順序插入這兩個元素?

+5

'set'只需要獨特的元素。如果你插入'1'和'2'並且'cmp'表示它們相等,那麼'2'不會被插入。也許你正在尋找'multi_set'? – nwp

+1

內部順序是什麼?一個集合中不能有兩個相等的元素。 –

+0

是的,你是對的。 multiset是我的意思,謝謝:) –

回答

2

重新排列元素的唯一方法是刪除一個元素並重新插入元素。

將相同的元素插入到多重集時,添加的元素將在現有元素之後,或者您可以使用提示的函數來控制重新插入元素的位置。