如何增加集合中的元素?
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())
我正在尝试减少最大的数字,直到我 运行 减少 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())