我有一个ObjectArray
类型的C++对象
typedef map<int64_t, std::unique_ptr<Class1>> ObjectArray;
将
unique_ptr
创建为Class1
类型的新对象并将其插入到ObjectArray
类型的对象中的语法是什么? 最佳答案
首先,如果它是一个映射而不是一个数组,我不会将其称为ObjectArray
。
无论如何,您可以通过以下方式插入对象:
ObjectArray myMap;
myMap.insert(std::make_pair(0, std::unique_ptr<Class1>(new Class1())));
或者这样:
ObjectArray myMap;
myMap[0] = std::unique_ptr<Class1>(new Class1());
两种形式之间的区别在于,如果 key
0
已经存在于映射中,则前一种形式将失败,而第二种形式将用新的形式覆盖其值。在C++ 14中,您可能要使用
std::make_unique()
而不是根据unique_ptr
表达式构造new
。例如:myMap[0] = std::make_unique<Class1>();
关于c++ - C++在 map 中插入unique_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16923748/