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