Структура данных карты в C ++ - PullRequest
1 голос
/ 31 декабря 2011

Мне нужно создать карту векторов. Первый вектор содержит список строк, а второй вектор содержит список целочисленных идентификаторов. Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

Возможно, вы захотите взглянуть на Boost Variant (см. http://www.boost.org).. Затем используйте:

std::map<std::string, boost::variant<std::vector<string>, std::vector<int>>>

Если, с другой стороны, вы пытаетесь отобразить один вектор на другой,тогда вы можете сделать это, предоставив пользовательский предикат сортировки для векторов типа ключа при создании карты.

2 голосов
/ 31 декабря 2011
std::map<std::string, int> isThisWhatYouNeed; //?
std::map<std::vector<std::string>, std::vector<int> > orThis; //?
0 голосов
/ 31 декабря 2011

Если я правильно понимаю ваш вопрос, вам нужна карта key => vector, где один вектор содержит строки, а другой - целые?

Вы не можете смешивать такие типы. Самое близкое, что вы можете сделать, это создать карту key => CustomClass, где ваш пользовательский класс содержит вектор строк и вектор целых чисел, и оба заполняются.

В качестве альтернативы, если вы хотите быть очень умным и потенциально создать для вас огромную головную боль отладки, вы можете сделать карту, чтобы аннулировать *, и вручную управлять тем, на что указывает каждый указатель:)

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