как бороться с картой карты?

0

Я пытаюсь найти решение этой проблемы http://codeforces.com/problemset/problem/159/A

Чтобы найти решение, я подумал о том, чтобы представить вклад, сделав карту карты. И для этого ввода моя карта должна выглядеть следующим образом:

м [ "Vasya"] = {{ "Петька", 1}}

м [ "Петька"] = {{ "Vasya", 2}}

м [ "анйа"] = {{ "иван", 2}}

м [ "иван"] = {{ "анйа", 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;
}

Может ли кто-нибудь помочь?

Теги:
visual-studio-2010

2 ответа

0
Лучший ответ

Вы хотите сделать более дескриптивный typedef, чем ii, но в частности вы просто хотите добавить новую пару ключ-значение в карту:

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

Или если вы хотите разделить его для ясности:

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

Или, если С++ 11 доступен вам, именно то, что вы выразили в своем вопросе:

m[s1] = {{s2, t}};
  • 0
    Это дает мне эту ошибку после изменения ,,,, IntelliSense: не существует подходящей функции преобразования из "std :: string" в "int"
  • 0
    @Abuzanona это потому, что вы определили t как string вместо int
1

Вы можете написать так:

m[s1][s2] = t;

Я предполагаю, что вы имели в виду int t; вместо string t; поскольку последний тип на вашей карте - int.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню