填充静态unordered_map局部变量

时间:2014-02-12 01:44:36

标签: c++ static unordered-map

我有一个使用unordered_map的函数,它在我的类中只有这个函数使用它:

void my_func(){
    static std::unordered_map<int,int> my_map;

    //I only want this to be done the first time the function is called.
    my_map[1] = 1;
    my_map[2] = 3;
    //etc

}

如何将元素插入到我的静态unordered_map中,以便它们仅在我的函数第一次被调用时插入(就像内存分配仅在第一次进行时一样)?

有可能吗?

1 个答案:

答案 0 :(得分:2)

在C ++ 11中(你可能会使用,否则就没有unordered_map),容器可以由列表初始化者填充:

static std::unordered_map<int,int> my_map {
    {1, 1},
    {2, 3},
    //etc
};

从历史上看,最干净的方法是调用一个返回已填充容器的函数:

static std::unordered_map<int,int> my_map = make_map();