如何处理地图的地图?

时间:2014-11-23 21:06:03

标签: c++ visual-studio-2010

我试图找到解决此问题的方法 http://codeforces.com/problemset/problem/159/A

为了找到解决方案,我想通过制作地图地图来呈现输入。 对于此输入,我的地图应如下所示:

M [" vasya&#34] = {{"彼佳",1}}

M ["彼佳&#34] = {{" vasya",2}}

M ["安亚&#34] = {{"伊凡",2}}

M ["伊凡&#34] = {{"安亚",4}}

以下是我的代码。

和我的作业代码: // m[s1]=(ii(s2,t)); 是错的

我的问题是如何分配到地图的地图?

#include<iostream>
#include <cstdio>
#include <map>
#include <set>
#include <string>
#include<vector>
using namespace std;

int main(){    
    typedef map<string, int> ii;
    map<string, ii> m;

    int n,d;
    cin>>n>>d;

    string s1,s2,t;
    for(int i=0;i<n;i++)
    {
        cin>>s1>>s2>>t;
        // m[s1]=(ii(s2,t));
    }

    return 0;
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你可以这样写:

m[s1][s2] = t;

我假设你的意思是int t;而不是string t;,因为地图中的最后一个类型是int

答案 1 :(得分:0)

您希望制作比ii更具描述性的typedef,但具体来说,您只想在地图中添加新的键值对:

m[s1].insert(std::make_pair(s2, t));

或者,如果您想将其拆分以保持清晰:

ii& submap = m[s1];
submap[s2] = t;

或者,如果你可以使用C ++ 11,那么你在问题中表达了什么:

m[s1] = {{s2, t}};