2017-01-23 16 views
0

私は空港の名前を持つ2つの入力ファイルがあるという問題に取り組んでいます。各空港には、サンフランシスコ(SFO)やロサンゼルス(LAX)などの標準化された略語があります。文字列を略語に一致させる

最初の入力ファイルはこれらの略語を使用し、2番目のファイルは都市名を使用します。

30種類のif-else条件でstd::string.compare()を使用するのではなく、洗練されたソリューションを探しています。

+3

使用する各略号[STD ::マップ](http://en.cppreference.com/w/cpp/container/map) –

答えて

5

Mapフルネーム

// Init map 
std::map<std::string, std::string> airports; 
airports["SFO"] = "San Francisco"; 
airports["LAX"] = "Los Angeles"; 

bool cmpAirports(std::string abbr, std::string fullname) 
{ 
    auto fname = airports.find(abbr); 
    if (fname == airports.end()) 
     return 0; // No airport with such abbreviation found 
    return fname->second == fullname; 
} 
関連する問題