Std:: map один ключ, два значения
Каков наилучший способ сопоставить два значения с одним ключом?
т.е. элемент со значением и bool.
Пробовал использовать:
std::map<std::string, std::pair<std::string, bool> > myMap2
Но это не похоже на правильное решение. Есть ли более элегантный способ сделать это?
Ответы
Ответ 1
Это действительно правильное решение. В более общем плане, используйте std::tuple
вместо std::pair
для однородного интерфейса независимо от количества значений (поскольку std::pair
, очевидно, ограничен двумя) или boost::tuple
, если ваш компилятор слишком стар для доставки с реализацией std::
или std::tr1::
.
Ответ 2
Используйте либо std::pair<>
, как и вы, или создайте собственную структуру, содержащую значения, которые вы хотите сохранить. Я бы сделал последнее в большинстве случаев, так как значения тогда имеют имена более описательные, чем first
и second
.
Ответ 3
Как правило, я создаю простую структуру/класс mapValue.