C++ 如何使用多维初始值设定项列表初始化自定义容器?

C++ 如何使用多维初始值设定项列表初始化自定义容器?,c++,stdmap,initializer-list,C++,Stdmap,Initializer List,我目前正在为std::map类型开发一个自定义包装器,并使用其他方法,如ContainsValue()。但由于我试图使它尽可能与std::map兼容,我想知道是否可以使用“多维初始值设定项列表”对其进行初始化 我的自定义贴图类型定义如下: template <typename TKey, typename TValue> class CustomMap { private: std::map<TKey, TValue> mapContent; public: /

我目前正在为
std::map
类型开发一个自定义包装器,并使用其他方法,如
ContainsValue()
。但由于我试图使它尽可能与std::map兼容,我想知道是否可以使用“多维初始值设定项列表”对其进行初始化

我的自定义贴图类型定义如下:

template <typename TKey, typename TValue>
class CustomMap {
private:
  std::map<TKey, TValue> mapContent;

public:
  // Some interaction methods here

  void operator=(/* initialization type here */) {
    /* initialization here */
  }
}
CustomMap<uint64_t, std::string> test = {
  { 0xFF, "MaxByte" },
  { 0xFFFF, "MaxWord" },
  { 0xFFFFFFFF, "MaxDWord" },
  { 0xFFFFFFFFFFFFFFFF, "MaxQWord" }
};
模板
类自定义地图{
私人:
地图内容;
公众:
//这里有一些交互方法
void运算符=(/*此处的初始化类型*/){
/*这里初始化*/
}
}
我说的是这样一个初始化列表:

template <typename TKey, typename TValue>
class CustomMap {
private:
  std::map<TKey, TValue> mapContent;

public:
  // Some interaction methods here

  void operator=(/* initialization type here */) {
    /* initialization here */
  }
}
CustomMap<uint64_t, std::string> test = {
  { 0xFF, "MaxByte" },
  { 0xFFFF, "MaxWord" },
  { 0xFFFFFFFF, "MaxDWord" },
  { 0xFFFFFFFFFFFFFFFF, "MaxQWord" }
};
CustomMap测试={
{0xFF,“MaxByte”},
{0xFFFF,“MaxWord”},
{0xFFFFFFFF,“MaxDWord”},
{0xFFFFFFFFFFFFFFFF,“MaxQWord”}
};

请注意,初始化中没有任何类型的强制转换。这一切都是自动发生的;就像原始的
std::map
类型一样。

当然,确保像
std::map
一样使用
std::initializer\u list
的构造函数具有:


或者转发所有构造函数:

对不起,我真的不明白。std::initializer\u列表不是只包含一种类型吗?那我该怎么做呢?老实说,我甚至不知道如何使用std::map。@RobinLe您可以在容器中使用
和value\u type=std::pair
(就像在
std::map
中一样)。之后,您的
std::initializer\u list
将实际获取相同类型的对象,即一对键和一个值。@passing\u through啊,好的,非常感谢!)