c++11 - 如何为没有默认构造函数的对象指示 std::unordered_map 的值构造
问题描述
假设我有以下课程:
struct Foo
{
Foo(int bar) : bar(bar) {}
int bar;
}
我如何指示 a在需要时std::unordered_map<int, Foo> map
进行构造Foo(100)
,例如:
- 地图初始化
- 地图运算符 []
为了使以下代码段起作用:
std::unordered_map<int, Foo> map;
assertTrue(map[11223344].bar == 100);
这甚至可能吗?
解决方案
当Foo
没有默认构造函数时,std::unordered_map::operator[]
无法使用。但是所有不需要默认构造的 Foo 都可以工作,例如初始化:
std::unordered_map<int, Foo> map {
{10, Foo{42}},
{20, Foo{43}}
};
以及新入口的就地建设:
map.emplace(11223344, 100);
推荐阅读
- javascript - vue js表格高亮效果类似Stack Overflow添加新行时的效果
- java - 列中具有不同行数的Java GridBagLayout
- c++ - (对于 C++)从文件中读取类型加倍为 2D 数组
- powershell - 命令间歇性地作为作业的作业打印状态运行
- python - r 子集按组对数据帧进行分层;子集每组的最大观察量,只要真假布尔值是平衡的
- angular - 未能在“历史”上执行“replaceState”
- css - 在 Vuetify 框架中覆盖渲染的 CSS 类
- android - 如何获得初始视图以加载到 android 应用程序中?
- asp.net-core - 在 ConfigureServices 中按环境获取连接字符串
- python - ElementNotVisibleException:Python + Selenium,Web 上的登录凭据