这有点类似于4d mapping in C++?这个问题,也是我以前在C++中使用Use a map with the map name defined by a string C++在 map 上遇到的问题之一

我有一个看起来像这样的代码(该代码不起作用,停在向 map 提供输入的行上):

#include <iostream>
#include <string>
#include <tuple>
#include <map>
#include <vector>

using namespace std;

int main()
{
    map<string, //Volkswagen (car brand)
        map<string, //series
            map<int, //in this example 1
                tuple<string, string>>>> mapMapMap;

    string myCarmapMapMap = "Volkswagen";
    int Number = 1;

    mapMapMap[myCarmapMapMap]["3 series"][Number] = {90, 20};,

    string Output;
    Output.assign(get<0>(mapMapMap[myCarmapMapMap].find("3 series")->second));
    cout << "\n" << "------------" << "\n" << Output << "\n"<< "------------" << "\n";
}

我想要做的是为Volkswagen3 series1分配两个值,然后可以像这样调用它:Volkswagen -> 3 series -> 1 -> <0> (value 1).
这是我收到的错误消息:|19|error: expected primary-expression before ',' token|
我也尝试过:
mapMapMap.insert({myCarmapMapMap, "3 series", Number, {"90", "20"}});
但这也不起作用。如何将4d map 与元组结合在一起?

最佳答案

更改您的作业,以便它实际上可以形成一个tuple<string, string>(请注意右侧的引号):

mapMapMap[myCarmapMapMap]["3 series"][Number] = {"90", "20"};

Example

另外,删除该行末尾的,

您的查询很可能可以通过再次包含Number来解决,例如:
string output = get<0>(mapMapMap[myCarmapMapMap].find("3 series")->second[Number]);

关于c++ - C++中具有元组的4D映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58378750/

10-09 18:51