Когда я попробовал эту часть кода:Ошибка в C++ Set?
int x=*(s.rbegin());
while(!s.empty()&&0<x)
{
s.erase(x);
x=*(s.rbegin());
}
Он работает в бесконечном цикле, потому что на самом деле не стирать ничего, когда я называю стереть. Это кажется странным, потому что * (s.rbegin()) обязательно должен находиться в s.
Какова ценность x? –
У вас есть неопределенное поведение после того, как последнее значение набора будет удалено, а затем вы отделите от него итератор. Если вы не можете гарантировать, что условие '0
Как вы заявляете '' '? –