对于一个项目,我有一个开放表,我决定放入一个std::unordered_map. 不幸的是,我仅限于对整个地图进行硬编码。因此,我决定将初始化拆分为多个文件。
class OpeningBook
{
public:
    OpeningBook();
private:
    std::unordered_map<std::string, int> opening_database_;
    void init1();
    void init2();
    void init3();
    void init4();
    void init5();
};
构造函数只调用init函数:
OpeningBook::OpeningBook()
{
    init1();
    init2();
    init3();
    init4();
    init5();
}
所有这些看起来都是这样的:
void OpeningBook::init1()
{
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000001100000-1-1000",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000000100000-1-1100",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000000100001-1-1000",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000000100000-1-1010",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000000100010-1-1000",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-1000000100000-1-1001",5000));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-100000010000-11-1000",0));
    opening_database_.insert(std::pair<std::string, int>("0001000000-10000001000000-100000010000-10-1100",5000));
    // continues
}
但是,只要我的代码碰到 中的左大括号init1(),它就会引发堆栈溢出异常。我认为不会发生堆栈溢出,因为 anunordered_map在堆上。这是怎么回事?我该怎么做才能解决这个问题?