c++ - 如何初始化 unordered_map> 成员使用初始化列表?
问题描述
我有这门课
class A {
unordered_map<string, unordered_set<string>> n_;
public:
A(unordered_map<string, unordered_set<string>>& n) : n_{n} {}
};
我希望能够使用具有该语法的构造函数
int main() {
A a{{"C", {"A", "B"}}};
return 0;
}
但是按照现在的写法,我遇到了错误
error: no matching function for call to `‘A::A(<brace-enclosed initializer list>)’ A a{{"C", {"A", "B"}}};`
如何修复?
解决方案
您需要{}
为它再添加一个。请注意,临时不能绑定到对非常量的左值引用。(它们可以绑定到对 const 或右值引用的左值引用。)例如
class A {
unordered_map<string, unordered_set<string>> n_;
public:
A(const unordered_map<string, unordered_set<string>>& n) : n_{n} {}
//^^^^^
};
int main() {
A a{{{"C", {"A", "B"}}}};
// ^^^ ^^^ elements of unordered_set
// ^^^^^^^^^^ for the unordered_set
// ^^^^^^^^^^^^^^^^^ elements (std::pair) of unordered_map (only one here)
// ^^^^^^^^^^^^^^^^^^^ for the unordered_map
// ^^^^^^^^^^^^^^^^^^^^^ for A
return 0;
}
我猜你可能会错过;{}
的元素 ( std::pair
) unordered_map
以类似的方式,如果要unordered_map
包含两个元素,可以将其写为
A b{{{"C", {"A", "B"}}, {"F", {"D", "E"}}}};
推荐阅读
- reporting-services - 删除折线图 SSRS 中的空白条目
- ios - 第二个 UICollectionView 没有重新加载
- html - 使用节点 js 将函数参数值发送到 html 模板
- symfony - Symfony Webpack Encore,多个 JS/CSS 文件到一个文件
- qt - 如何将 mbtiles 转换为 .osm.pbf
- javascript - 如何编写 if 语句的第一行来测试时钟是否在点上的一个小时
- php - 如何阅读邮件正文
- vue.js - Vue js不能拖动输入类型文件
- spring-boot - Spring Mail Sender 使用 Gmail SMTP 错误。我该如何解决?
- javascript - 为什么尽管存在终止条件,但无限循环仍然存在?