Как перевернуть словарь(map)?

Нужно написать программу, которая меняет ключ и значение местами

#include<iostream>
#include<string>
#include<map>

using namespace std;

void BuildMap(map<string, string> m)
{
    string word1;
    string word2;
    for(const auto&[key, value]: m)
    {
        word1 = key;
        word2 = value;
        cout<<word2<<" "s<<word1<<endl;
    }
    
}
map<string, string> g = {{"first"s, "second"s}, {"left"s, "right"s}};
int main()
{
    BuildReservedMap(g);
    return 0;
}

Я написал эту программу, но она не работает, получается вот такая ошибка: Ошибка компиляции: /tmp/tmpc5imz872.cpp: In function ‘void tests::TestEmpty()’: /tmp/tmpc5imz872.cpp:32:16: error: ‘BuildReversedMap’ was not declared in this scope; did you mean ‘BuildReservedMap’? 32 | Assert(BuildReversedMap(input) == input, ""); | ^~~~~~~~~~~~~~~~ | BuildReservedMap compilation terminated due to -Wfatal-errors. Как её можно исправить?


Ответы (1 шт):

Автор решения: dIm0n

У вас функция BuildMap называется, а вызываете BuildReservedMap.

Исправленный вариант:

#include<iostream>
#include<string>
#include<map>

using namespace std;

void BuildMap(map<string, string> m)
{
    string word1;
    string word2;
    for(const auto&[key, value]: m)
    {
        word1 = key;
        word2 = value;
        cout<<word2<<" "s<<word1<<endl;
    }
    
}
map<string, string> g = {{"first"s, "second"s}, {"left"s, "right"s}};
int main()
{
    BuildMap(g);
    return 0;
}
→ Ссылка