У меня есть перечисление, и я хочу поместить их все в набор (а затем удалить некоторые с помощью алгоритма set_intersection, но это оффтоп). Все отлично работает, за исключением того, что я застрял на шаге 1. :)
Если у меня есть (у реального класса есть перечисление с более высокой кардинальностью)
class MyClass
{
enum Color{red, green , blue}
};
Как бы я инициировал std::set<MyClass::Color>
, чтобы он содержал все перечисления.
Очевидно, я могу вручную вставлять их один за другим, выполнять цикл for с приведением, поскольку они идут последовательно и начинаются с 0 (я думаю, что это необходимо, если я не использую = в enum определение), но я ищу более элегантный способ.
РЕДАКТИРОВАТЬ: я предпочитаю решение С++ 03, если это возможно, потому что текущий экземпляр проблемы требует этого, но если нет, С++ 11 тоже полезно знать.
total
в качестве последнего элемента перечисления, значение которого становится равным количеству значений =) - person kassak   schedule 14.03.2013total
илиcolors_count
как последний элемент перечисления очень полезно во многих случаях - person borisbn   schedule 14.03.2013