Я нахожу метод С++ STL, делая простые операции с множеством, довольно неуклюжими в использовании. Например, чтобы найти разницу между двумя наборами:
std::set<int> newUserIds;
set_difference(currentUserIds.begin(), currentUserIds.end(), mPreviousUserIds.begin(), mPreviousUserIds.end(), std::inserter(newUserIds, newUserIds.end()));
std::set<int> missingUserIds;
set_difference(mPreviousUserIds.begin(), mPreviousUserIds.end(), currentUserIds.begin(), currentUserIds.end(), std::inserter(missingUserIds, missingUserIds.end()));
mPreviousUserIds = currentUserIds;
Поддерживает ли boost альтернативный набор классов, который сводит приведенный выше пример к следующему:
set_type<int> newUserIds = currentUserIds.difference(mPreviousUserIds);
set_type<int> missingUserIds = mPreviousUserIds.difference(currentUserIds);
(Аналогично QSet в Qt, который таким образом переопределяет operator-
.)