s1 и s2 являются наборами (набор Python или C ++ std :: set)
Чтобы добавить элементы s2 в s1 (установить объединение), вы можете сделать
Python: s1.update(s2)
C++: s1.insert(s2.begin(), s2.end());
Чтобы удалить элементы s2 из s1 (установить разницу), вы можете сделать
Python: s1.difference_update(s2)
Что является эквивалентом этого в C ++? Код
s1.erase(s2.begin(), s2.end());
не работает, поскольку s1.erase () требует итераторов от s1. Код
std::set<T> s3;
std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(), std::inserter(s3, s3.end());
s1.swap(s3);
работает, но кажется слишком сложным, по крайней мере, по сравнению с Python.
Есть ли способ попроще?