初始化 std::map,使用默认构造的值
Initialize std::map, using default-constructed values
如果我有一个 std::map<int, char>
,它很容易初始化:
std::map<int, char> myMap =
{
{ 1, 'a' },
{ 2, 'b' }
};
如果我的值类型有默认构造函数,我可以像这样初始化它:
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, Foo() },
{ 2, Foo() }
};
但是假设我的值类型有一个默认构造函数,但是输入起来很笨拙:
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
,所有这些键都使用默认值-构造yourNamespace::subLibrary::moreLevels::justBecause::Thing
?我如何表示我希望映射值是其类型的默认构造?
您可以使用value initialization来解决这个问题。
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, {} },
{ 2, {} }
};
您可以创建一个 returns "yourNamespace::subLibrary::moreLevels::justBecause::Thing" 实例的函数。
如果我有一个 std::map<int, char>
,它很容易初始化:
std::map<int, char> myMap =
{
{ 1, 'a' },
{ 2, 'b' }
};
如果我的值类型有默认构造函数,我可以像这样初始化它:
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, Foo() },
{ 2, Foo() }
};
但是假设我的值类型有一个默认构造函数,但是输入起来很笨拙:
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
,所有这些键都使用默认值-构造yourNamespace::subLibrary::moreLevels::justBecause::Thing
?我如何表示我希望映射值是其类型的默认构造?
您可以使用value initialization来解决这个问题。
struct Foo
{
char x;
};
std::map<int, Foo> myMap =
{
{ 1, {} },
{ 2, {} }
};
您可以创建一个 returns "yourNamespace::subLibrary::moreLevels::justBecause::Thing" 实例的函数。