#include <string>
#include <map>
#include <vector>

typedef std::map<std::string, std::map<std::string, std::string>> SCHEMA;

int main() {
    SCHEMA schema;

    // Schema table
    schema["liczby"]["wartosc"] = "column";
    schema["liczby"]["wartość"] = "int";
    schema["studenci"]["indeks"] = "column";
    schema["studenci"]["imie"] = "column";
    schema["studenci"]["nazwisko"] = "column";
    schema["przedmioty"]["id"] = "column";
    schema["przedmioty"]["nazwa"] = "column";
    schema["przedmioty"]["semestr"] = "column";
    schema["sale"]["nazwa"] = "column";
    schema["sale"]["rozmiar"] = "column";
    schema["sale"]["projektor"] = "column";
    schema["sale"]["powierzchnia"] = "column";
}


如何为该地图添加第三级?
我已经尝试过这样的事情:

typedef std::map<std::string, std::string, std::map<std::string, std::string, std::string>> SCHEMA;


...但是它不起作用。我想要这样的结果:

schema["sale"]["powierzchnia"]["id"] = "column";

最佳答案

您的两个级别的地图都在正确的轨道上。要获得三个级别:

typedef std::map<std::string, std::map<std::string, std::map<std::string, std::string> > > SCHEMA;


或者,使用换行符进行格式化以使层次结构更加明显:

typedef std::map<std::string,
                 std::map<std::string,
                          std::map<std::string, std::string> > > SCHEMA;


std::map的第一个参数是键的类型,第二个参数是键所映射的对象。因此,每个级别(最后一个级别除外)都映射到下一级别的映射。

07-24 14:02