#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
的第一个参数是键的类型,第二个参数是键所映射的对象。因此,每个级别(最后一个级别除外)都映射到下一级别的映射。