У меня есть карта. Я хочу перевернуть ключ-значение, чтобы он не стал картой. Таким образом, в основном значение первой карты становится ключом второй карты. Как мне это сделать?
Пример карты:
1 - 1.0
2 - 2.0
После переворота
1.0 - 1
2.0 - 2
У меня есть карта. Я хочу перевернуть ключ-значение, чтобы он не стал картой. Таким образом, в основном значение первой карты становится ключом второй карты. Как мне это сделать?
Пример карты:
1 - 1.0
2 - 2.0
После переворота
1.0 - 1
2.0 - 2
Самый простой способ (известный мне) — создать новую карту с перевернутыми типами, повторить старую и добавить каждую пару ключ-значение в обратном порядке.
Например,
map<int, float> if_map;
// insert some items into if_map
if_map[1] = 43.11;
if_map[44] = -13421.438;
map<float, int> reversed;
for (map<int, float>::iterator i = if_map.begin(); i != if_map.end(); ++i)
reversed[i->second] = i->first;
vector<pair>
.
- person rwong; 18.03.2013
Если вам нужен поиск в обоих направлениях, вы можете использовать Boost.bimap