получение ключей карты STL - PullRequest
3 голосов
/ 12 ноября 2010

Есть ли способ (помимо хранения ключа как части значения и итерации по карте) получения ключей из карты STL, мультикарты (hash_map) а-ля Perl-ключей (% хеша)?

Ответы [ 3 ]

14 голосов
/ 12 ноября 2010
for (std::map<key, value>::iterator iter = m.begin(); iter != m.end(); ++iter)
    iter->first; // this is the key
0 голосов
/ 27 мая 2016

Вы можете использовать цикл for.

for (const auto & keyVal : myMap)
    keyVal.first;
0 голосов
/ 12 ноября 2010

Если вам часто нужно получить эти ключи (как в большом цикле), тогда вам может быть интересно использовать boost :: bimap . В противном случае вы можете использовать правильное решение Николы.

Иногда я добавляю копии ключей в другой контейнер при добавлении элементов на карту. Требуется обязательно синхронизировать два контейнера, но если он достаточно изолирован (в классе), его легко настроить.

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