如果我有std::map<int, char>
,那么它很容易初始化:
std::map<int, char> myMap =
{
{ 1, 'a' },
{ 2, 'b' }
};
如果我的value-type有一个默认构造函数,我可以像这样初始化它:
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, Foo() },
{ 2, Foo() }
};
但是假设我的value-type有一个默认的构造函数,但输入的内容很难:
std::map<int, yourNamespace::subLibrary::moreLevels::justBecause::Thing> myMap =
{
// What goes here? I don't want to type
// yourNamespace::subLibrary::moreLevels::justBecause::Thing again.
};
如果没有using
声明使值类型对键盘更友好,是否有一些方法可以使用一组键初始化map
,所有键都使用默认构造的{ {1}}?我如何表示我希望映射值是默认构造的类型?
答案 0 :(得分:4)
您可以使用value initialization来解决此问题。
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, {} },
{ 2, {} }
};
答案 1 :(得分:0)
你可以创建一个返回&#34; yourNamespace :: subLibrary :: moreLevels :: justBecause :: Thing&#34;的实例的函数。