Как увеличить элемент в наборе? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь уменьшить наибольшие числа, пока не исчерпаю 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--;
    }

1 Ответ

3 голосов
/ 03 марта 2020

Есть ли способ изменить элементы "изменчивости"

Не элементы набора. Они всегда постоянны. Вы не можете изменять их.

Вместо этого вы можете сделать копию элемента, стереть элемент из набора и вставить измененное значение.

PS Вместо (*--t.end()) , используйте t.back()

...