如何将二维向量二重映射到字符串



我正在尝试将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"} };