c++ - 使用初始化列表构造函数构造具有不可复制值类型的 std::map
问题描述
有没有办法使用初始化列表构造函数构造具有不可复制值类型的 std::map ?
请参阅以下示例
#include <memory>
#include <map>
int main()
{
std::map<int, int*> int_ptr{{1, nullptr}}; // compiles
// std::map<int, std::unique_ptr<int>> unique_ptr_int{{1, std::unique_ptr<int>()}}; // Doesn't compile
}
注意:我特别询问是否可以使用初始化器列表构造函数来完成。我知道我可以使用不同的构造函数构造地图并添加元素,但我想知道是否可以使用此构造函数以及如何使用它,也许使用 std::piecewise_construct 或类似的东西。
解决方案
我想最简单的方法是将智能指针放在地图中,这样对象就不会被复制。
std::map<int,std::shared_ptr<myobj>> myobj_Map;
推荐阅读
- java - 正确呈现 javadoc 方法链接到使用破折号而不是括号和逗号的外部 html javadoc 文档
- python-3.x - PyQt5:通过 uic.loadUi 打开一个新窗口
- r - 如何从 lrm() 获得 OR 和 95%CI?
- matrix - 矩阵计算的准确性
- c - 在C中将大位字符串转换为十六进制
- javascript - Redux-Form handleSubmit 问题 [传递 handleSubmit() 一个 onSubmit 函数或传递 onSubmit 作为 prop]
- typescript - 条件类型和泛型
- php - Rinvex laravel 地址
- python - 在 Kivy 中传递自定义小部件属性
- caching - LFU 缓存 - 随机/不一致的结果