我正在尝试将2d向量映射到字符串;例如,特别是我想将每一行分配给其正确的字符串,因此将1,2,7分配给yes。
如果我想为相同的值分配不同的键怎么办?
在第1行和第2行中,有一个值2,我想为第1行中的2分配“是”,并为第2行中的2分配“否”?
第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:\practice\finalproject\finalproject\source.cpp(118): error C2552: 'map_of_strings' : non-aggregates cannot be initialized with initializer list
答案 0 :(得分:1)
要分配单个值,您需要按照以下方式进行操作:
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"} };