Я пытаюсь найти решение этой проблемы http://codeforces.com/problemset/problem/159/A
Чтобы найти решение, я подумал о том, чтобы представить вклад, сделав карту карты. И для этого ввода моя карта должна выглядеть следующим образом:
Ниже мой код.
и мой код назначения: //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;
}
Может ли кто-нибудь помочь?
Вы хотите сделать более дескриптивный typedef, чем ii
, но в частности вы просто хотите добавить новую пару ключ-значение в карту:
m[s1].insert(std::make_pair(s2, t));
Или если вы хотите разделить его для ясности:
ii& submap = m[s1];
submap[s2] = t;
Или, если С++ 11 доступен вам, именно то, что вы выразили в своем вопросе:
m[s1] = {{s2, t}};
Вы можете написать так:
m[s1][s2] = t;
Я предполагаю, что вы имели в виду int t;
вместо string t;
поскольку последний тип на вашей карте - int
.
t
какstring
вместоint