假设我有以下课程:
struct Foo
{
Foo(int bar) : bar(bar) {}
int bar;
}
我怎样才能指示std::unordered_map<int, Foo> map
在需要时构建Foo(100)
,例如:
为了使以下代码段起作用:
std::unordered_map<int, Foo> map;
assertTrue(map[11223344].bar == 100);
这甚至可能吗?
当Foo
没有默认构造函数时,使用std::unordered_map::operator[]
无法正常工作。但是,不需要默认构造Foo的所有东西都可以工作,例如初始化:
std::unordered_map<int, Foo> map {
{10, Foo{42}},
{20, Foo{43}}
};
以及新条目的就地建设:
map.emplace(11223344, 100);