首页 > 解决方案 > 如何使用map c ++删除重复

问题描述

所以我有Text.txt,国家和河流在哪里。所以我必须输出河流和当前河流存在的所有国家。

文本.txt:

Spanish Taho
France Rhine
Ukrain Dnipro
Germany Rhine
Russia Dnipro
Portugal Taho

代码:

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

using namespace std;


int main()
{
    map<string, string> country;
    ifstream in("Text.txt");
    string key;
    string river;
    while (in >> key >> river)
    {
        country[key] = river;
    }
        map<string, string>::iterator it;
        map<string, string>::iterator it2;
        for (it = country.begin(); it != country.end(); it++) {
            cout << it->second << ":" << endl;
            for (it2 = country.begin(); it2 != country.end(); ++it2) {
                if (it->second == it2->second ) {
                    cout << "-" << it2->first << endl;
                }
            }
        }
    cout << endl;
    system("pause");
    return 0;
}

结果:

Rhine:
-France
-Germany
Rhine:
-France
-Germany
Taho:
-Portugal
-Spanish
Dnipro:
-Russia
-Ukrain
Taho:
-Portugal
-Spanish
Dnipro:
-Russia
-Ukrain

我需要的:

Rhine:
-France
-Germany
Taho:
-Portugal
-Spanish
Dnipro:
-Russia
-Ukrain

如何去除重复?


一些用于转义的文本“看起来您的帖子主要是代码;请添加更多详细信息。” 错误

标签: c++

解决方案


您的数据结构不适合该解决方案。

试试下面:

map<string, vector<string>> riverToCountryMap

在插入数据时:

riverToCountryMap[河流].push_back(国家);


推荐阅读