我有一个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/

10-11 23:08
查看更多