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啊,好的,非常感谢!)