Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 1
Регистрация: 12.02.2018
Сообщений: 42
1

Как получить индекс по значению map

05.08.2018, 14:58. Просмотров 1391. Ответов 1
Метки нет (Все метки)

C++
1
2
3
std::map<string, string> m {{"123", "shit"}, {"321", "govno"}, {"234", "curva"}};
return m["123"]; //Вернёт shit
return m["shit"]; //Должен вернуть 123, но map не поддерживает такое, поэтому нужно решение.
Мне нужно, чтобы можно было получать элемент по индексу и наоборот. Как это реализовать?
Так же нужен упор на производительность, так что если есть метод по лучше, чем map, то пишите - отмечу как вас ответ
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2018, 14:58
Ответы с готовыми решениями:

Получить индекс типа в mpl::map`е
всем привет. есть mpl карта типов(key -&gt; value). нужно получить индекс типа имея только ключ....

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

Как получить индекс массива по его присвоенному значению?
Дано: dateId = 1; dateId = 16; dateId = 5; или dateId Как получить x. где dateId равна...

Получить индекс по значению в ListBox
Всем привет! Как реализовать поиск строки (индекса её), с нужным нам текстом, не зная её индекса.

1
Эксперт С++
3056 / 1398 / 421
Регистрация: 19.01.2009
Сообщений: 3,761
05.08.2018, 17:55 2
Лучший ответ Сообщение было отмечено forprix как решение

Решение

forprix, нужно создать новый мап:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <map>
 
template <typename Key, typename T>
void flip_map(const std::map<Key, T> & source, std::multimap<T, Key> & result) {
    typedef std::map<Key, T> source_type;
    typedef typename source_type::const_iterator source_iterator;
    for (source_iterator i = source.begin(), end = source.end(); i != end; ++i)
        result.insert(std::make_pair((*i).second, (*i).first));
}
 
int main() {
    std::map<std::string, std::string> m {{"123", "A"}, {"321", "B"}, {"234", "C"}, {"235", "C"}};
    std::multimap<std::string, std::string> f;
    flip_map(m, f);
    std::cout << "original:\n";
    for (auto elem : m) std::cout << elem.first << " " << elem.second << "\n";
    std::cout << "flipped:\n";
    for (auto elem : f) std::cout << elem.first << " " << elem.second << "\n";
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2018, 17:55

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

Как отсортировать Map по значению
Ребятки всем добра! Подскажите как отсортировать Map по значению. Что имеется в виду! Есть карта...

Как отсортировать map по значению?
Задача: Ввести с консоли n целых чисел. На консоль вывести: Числа в порядке убывания частоты...

Map с поиском как по ключу, так и по значению
Реализовано ли подобное в stl? (или в boost, например) И как в теории выглядит эта реализация?...

как определить индекс массива при поиске по значению?
B - массив А - значение B.contains(a) определяю было вхождение или нет, а каким образом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.