我有一个使用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中,以便它们仅在我的函数第一次被调用时插入(就像内存分配仅在第一次进行时一样)?
有可能吗?
答案 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();