У меня есть этот код:Является ли следующий код, используя std :: set "legal"?
set<int>::iterator new_end =
set_difference(set1.begin(), set1.end(),
set2.begin(), set2.end(),
set1.begin());
set1.erase(new_end, set1.end);
Это компилирует и работает нормально в Visual Studio. Однако в previous question люди заявили, что итераторы set
должны быть const
. Я не вижу ничего подобного в стандарте. Может ли кто-нибудь сказать мне, где это сказано, или если это четко определенное поведение?
Если это не так, укажите код, который делает то, что мне нужно. Есть ли способ сделать это без создания временного набора?