添加第3级地图

时间:2013-12-04 01:34:29

标签: c++ map

#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";

1 个答案:

答案 0 :(得分:3)

你在两个级别的地图上走在正确的轨道上。获得三个级别:

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的第一个参数是键的类型,第二个参数是键映射的内容。因此,每个级别(除了最后一个级别)都映射到下一级别的地图。