我正在尝试将2d向量映射到字符串;例如,特别是我想将每一行分配给它的正确字符串,比如1、2、7为yes。
另外,如果我想将不同的键分配给相同的值,该怎么办?
在第1行和第2行中,有一个值2,我想给第1行中的2指定yes,给第2行的2指定no,我该怎么做?
第1行:{1,2,7}映射到"是">
第2行:{2,3,4}映射到"否">
第3行:{5,7,8}映射到"是">
我的2D矢量:
int N = 3;
int M = 3;
vector<vector<double>> matrix2d(N, vector<double>(M));
我的第一行代码不起作用:
map < vector<double>, string > map_of_strings;
map_of_strings = {{matrix2d[0][0], matrix2d[0][1], matrix2d[0][2]}, "yes"};
我收到的错误消息是:
1>d:practicefinalprojectfinalprojectsource.cpp(118): error C2552: 'map_of_strings' : non-aggregates cannot be initialized with initializer list
要分配单个值,您需要按照以下方式进行:
map_of_strings [{matrix2d[0][0], matrix2d[1][0], matrix2d[2][0]}] = "yes";
或者这样:
map_of_strings [{1, 2, 7}] ="yes";
然后,您可以检查给定组合的内容:
cout << map_of_strings [{matrix2d[0][0], matrix2d[1][0], matrix2d[2][0]}] << endl;
如果你想用几个值初始化你的映射,你需要在一个大括号内提供几个{key,value}:
map < vector<double>, string > map_of_strings = { {{1, 2, 7},"yes"},
{{2, 3, 4},"no"},
{{5, 7, 8},"yes"} };