rodrigo.bossini:
Oi pessoal,
Tem como limitar o número de elementos que um multiset pode conter? Eu gostaria de criar um multiset cuja capacidade seja limitada por um inteiro n que eu informar. Assim, se na hora da inserção já existirem n elementos, o novo elemento será inserido somente se ele for menor do que pelo menos um outro já existente no multiset…e o menor deles será excluído do multiset. Tem algum jeito "pronto" de fazer isso?
A maneira mais simples de fazer isso é estender o template multiset<>, efetuando um override nos métodos insert (cuidado que há três overloads desse método, pelo menos). Pronto não tem, até porque você não fez a especificação direito do que você quer.
Digamos que você tem o seguinte multiset com n = 4 elementos (nem estou usando elementos repetidos para simplificar o exemplo) :
1, 2, 3, 4
Você quer inserir o valor 1. Ele é menor que pelo menos algum outro já existente (ele é menor que 2, 3, e 4). Portanto, ele pode ser inserido, mas então você tem de remover o valor 1 que é o menor possível, e então ele será excluído do multiset. O resultado seria então 1, 2, 3, 4. É isso mesmo?
Agora, você quer inserir o valor 0. Ele é menor que o menor dos elementos, então ele pode ser inserido.
Mas pela sua especificação, você quer excluir o menor dos elementos que já estão no multiset, e o resultado seria:
0, 2, 3, 4
É isso mesmo? Cheira um pouco mal.