2014-10-10 43 views
-3

不止一對我有一張地圖這樣的:插入在C++

map<string, map<int, int>> collector; 

而且我不知道如何在我的地圖插入數據。如果我有

map<string, int> collector; 

只有鍵值我會用

collector.insert(pair<string, int>)(name,money)); 

但是,什麼是插入時我們已經映射貼圖的方式。我試圖做到:

typedef map<int, int> map_; 
    for(iteration = collector.begin(); iteration != collector.end(); iteration++) { 
    iteration = collector.find(word); 
    if(iteration == collector.end()) { 
     iteration = collector.insert(map_::value_type(num,num).first; 
    } 
} 

這種方式對我不起作用。

+0

你可以使用C++ 11層的功能? – blackbird 2014-10-10 17:06:08

+0

你是什麼意思? – Mankind 2014-10-10 17:06:55

+2

首先,你的代碼有語法錯誤。你得到的錯誤是什麼? – Cristy 2014-10-10 17:07:00

回答

1

這裏有一些方法插入到你的數據結構:

#include <iostream> // cout 
#include <map> 
#include <string> 
#include <utility> // make_pair 

using namespace std; 

int main() 
{ 
    using Collector = map<string, map<int, int>>; 

    Collector collector; 

    collector["USD"] = Collector::mapped_type{ { 1, 3 }, { 0, 8 } }; 

    collector["EUR"].insert(make_pair(4, 5)); 
    collector["EUR"].insert(make_pair(6, 7)); 

    collector["CHF"][2] = 4; 

    const Collector::mapped_type jpyIntegers { { 10, 20 }, { 100, 200 } }; 

    collector.insert(make_pair("JPY", jpyIntegers)); 

    collector["MMK"]; 

    for (const auto& a: collector) { 
     cout << a.first << ": "; 
     for (const auto& i: a.second) { 
      cout << "(" << i.first << "|" << i.second << ")"; 
     } 
     cout << "\n"; 
    } 
}