假设我有以下课程:
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);
这有可能吗?
答案 0 :(得分:0)
如果Foo
没有默认构造函数,则无法使用std::unordered_map::operator[]
。但是不需要默认构造Foo的所有东西都可以使用,例如初始化:
std::unordered_map<int, Foo> map {
{10, Foo{42}},
{20, Foo{43}}
};
以及新条目的就地构建:
map.emplace(11223344, 100);