c++ 在删除和插入新值时,集合是否会重新排序?

7vux5j2d  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(122)

假设我用multisetm创建一个集合;现在如果我在其中插入n个元素,然后删除其中一个元素,然后插入一个新元素而不是以前的元素。然后,集合将具有相同的顺序,否则它的顺序将改变,以便再次以排序的方式排列自己。

multiset<long long> a;
        for( int i=0 ; i<n ; i++)
        {
            int x;
            cin>>x;
            a.insert(x);
        }
        for( int i=0 ; i<k ; i++)
        {
            auto it=(--a.end());
            long long max=(*it);
            sum+=max;
            a.erase(it);
            a.insert((max)/2);

        }
I tried something like this
a0zr77ik

a0zr77ik1#

是的,我弄错了。我是在擦除它之后使用迭代器的。我找到了一个更好的方法来做我正在做的事情。我只是先存储(*it)的值,然后擦除它,然后插入(*it)/2。当我使用insert函数插入一些值时,当插入一个新值时,集合再次被排序。

相关问题