2016-10-21 14 views
0

次のタイプのマップを印刷するにはどうすればいいですか: map<string, vector<string>>Coutへの地図の印刷

これまでに試したことはすべてエラーになりました。

+0

これまでに何を試しましたか? – krzaq

+0

何を印刷しますか? – Sumeet

+0

@Sumeet申し訳ありませんが、特に言及するのを忘れました。私はマップにすべてのキーとそれに対応する値を出力したいと思います。 –

答えて

0

それは非常に簡単ですが、ちょうど実装:

std::ostream & operator<<(std::ostream & os, const map<string, vector<string>>& myMap) 

一つの簡単な実装があるかもしれません。

std::ostream & operator<<(std::ostream & os, const map<string, vector<string>>& myMap) 
{ 
    for(auto elem : myMap) { 
     std::os << it->first << " -> "; 
     auto & vec = it->second; 
     for(int i=0;i<vec.size();i++){ 
      os << vec[i] << " "; 
     } 
     os << "\n";  
    } 
    os<<"\n"; 
    return os; 
} 
0

(Visual Studio 2013でテスト済みの)このようなものを試すことができます。 厳密に言えば、問題を解決するために自分で試したコードを含める必要があります。試したすべてがエラーを起こしたとあなたは言った。あなたが試したものと正確なエラーを投稿してください。

#include "stdafx.h" 
#include <vector> 
#include <map> 
#include <iostream> 
#include <string> 

using namespace std; 

int main(int argc, char* argv[]) 
{ 
    map<string, vector<string>> myMap; 
    myMap["key1"] = { "m00", "m01", "m02" }; 
    myMap["key2"] = { "m10", "m11" }; 
    myMap["key3"] = { "m20", "m21", "m22", "m23" }; 

    for (auto m : myMap) 
    { 
     string const & key = m.first; 
     vector<string>& v = m.second; 
     cout << "Key=" << key.c_str(); 
     for (auto i : v) 
      cout << " " << i.c_str(); 
     cout << endl; 
    } 
    return 0; 
}