Boost::unordered_map 与初始化列表?

Posted

技术标签:

【中文标题】Boost::unordered_map 与初始化列表?【英文标题】:Boost::unordered_map with initialization list? 【发布时间】:2011-08-03 00:50:30 【问题描述】:

是否可以使用初始化列表初始化boost::unordered_map-Weffc++ 需要它。

我不能使用方法来初始化它,因为我只是在构造函数内部进行了一些处理后才填充地图。我可以在方法中创建一个空映射并将其返回,但这对我来说听起来不是一个好主意。

我也可以使用指针并将其初始化为 NULL。我宁愿不这样做,尽管它比创建一个空方法的等价物更好。

【问题讨论】:

这里的初始化列表是什么意思?为什么不直接显式调用其默认构造函数? 因为这个原因我不使用Weffc++ 我不使用-Weffc++,因为它看起来像是一种“礼貌”的方式来表达“F*** C++”,我当然不想这么说。跨度> 【参考方案1】:

只需默认-构造初始化列表中的成员变量:

struct S 
    boost::unordered_map<int, int> m;

    S() : m()  
;

这足以让-Weffc++闭嘴。

【讨论】:

这是值初始化,而不是默认初始化(第 8.5/7 节)。 :-] 好的,谢谢。 (我的真正意思是默认构造,但是是的,值初始化也是正确且更通用的。)

以上是关于Boost::unordered_map 与初始化列表?的主要内容,如果未能解决你的问题,请参考以下文章

boost::boost::unordered_map 的序列化

boost::unordered_map 中以结构为键的 boost 变体

指定构造 boost::unordered_map 时的最小桶数

如何使用 boost std::vector of boost::unordered_map 进行序列化/反序列化

boost::unordered_map() 的 find() 方法的问题

使用 std::map/boost::unordered_map 帮助理解段错误