如何增加一组元素?

问题描述 投票:0回答:1

我正在尝试减少最大数量,直到用完m减少为止。为此,我认为该套件是最佳解决方案,因此我尝试了它。没用这是我第一次遇到这样的错误。有什么办法可以改变元素的“可变性”。如果您有更好的解决方案的建议,请随时回答。

set<pair<float, long int>> t;
    long unsigned n, m;
    scanf("%lu%lu", &n, &m);
    for (long unsigned i = 0; i < n; i++)
    {
        float p;
        scanf("%f", &p);
        t.insert({p, 1});
    }
    m -= n;
    while (m)
    {
        (*--t.end()).second++;
        (*--t.end()).first *= ((*--t.end()).second - 1) / (*--t.end()).second;
        m--;
    }
c++ set immutability mutability
1个回答
0
投票

有没有办法改变元素的“可变性”

不是集合的元素。他们总是const。您不能修改它们。

您可以做的是复制元素,从集合中删除元素,然后插入修改后的值。

P.S。代替(*--t.end()),使用t.back()

© www.soinside.com 2019 - 2024. All rights reserved.