У меня есть перечисление, и я хочу поместить их все в набор (а затем удалить некоторые с помощью алгоритма set_intersection, но это оффтопный). Все работает отлично, за исключением Im застрял на шаге 1. :)Как изящно поместить все перечисления в std :: set
Если у меня есть (реальный класс имеет перечисление с более высокой мощностью)
class MyClass
{
enum Color{red, green , blue}
};
Как бы я инициализировать в std::set<MyClass::Color>
содержать все перечисления.
Я, очевидно, вручную вставляю их один за другим, делаю цикл for с кастингом, так как они являются последовательными и начинаются с 0 (я думаю, что это необходимо, если я не использую = в определении перечисления), но Im ищет более элегантный способ ,
EDIT: Я предпочитаю решение C++ 03, если это возможно, потому что текущий экземпляр проблемы требует его, но если не C++ 11 хорошо знать.
если они являются последовательными и, начиная с нуля, вы можете добавить 'total' элемента, как в прошлом ENUM, который значение становится равным числу значений =) – kassak
Хорошее замечание от @kassak' total' или 'colors_count' в качестве последнего элемента перечисления очень полезно во многих случаях – borisbn
@kassak Я знаю об этом трюке, но это зависит от комментариев CAPS LOCK, которые предотвращают переход ppl и определяют значение int каждого перечисления. :) – NoSenseEtAl