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.