如何增加集合中的元素?

How to increase element in a set?

我正在尝试减少最大的数字,直到我 运行 减少 m。为此,我认为该套装是最好的解决方案,所以我尝试了一下。它没有用。这是我 运行 第一次遇到这样的错误。有没有办法改变元素"mutability"。如果您对更好的解决方案有任何建议,请随时回答。

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--;
    }

Is there any way to change elements "mutability"

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

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

P.S。使用 t.back()

而不是 (*--t.end())