std :: map один ключ, два значения - PullRequest
13 голосов
/ 06 апреля 2011

Каков наилучший способ сопоставить два значения одному ключу?

т.е. элемент со значением и бул.

Пробовал с помощью:

std::map<std::string, std::pair<std::string, bool> > myMap2

Но это не похоже на правильное решение. Есть ли более элегантный способ сделать это?

Ответы [ 3 ]

7 голосов
/ 06 апреля 2011

Это действительно правильное решение.В более общем случае, рассмотрите возможность использования std::tuple вместо std::pair для унифицированного интерфейса независимо от количества значений (поскольку std::pair явно ограничено двумя), или boost::tuple, если ваш компилятор слишкомстарый для отправки с реализацией std:: или std::tr1::.

6 голосов
/ 06 апреля 2011

Либо используйте std::pair<>, как вы, либо создайте собственную структуру, содержащую значения, которые вы хотите сохранить.Я бы сделал последнее в большинстве случаев, так как значения имеют имена, более описательные, чем first и second.

1 голос
/ 06 апреля 2011

Обычно я создаю простую структуру / класс mapValue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...