タイプのC++オブジェクトがありますObjectArray
typedef map<int64_t, std::unique_ptr<Class1>> ObjectArray;
unique_ptr
タイプの新しいオブジェクトに a を作成し、それをタイプClass1
のオブジェクトに挿入する構文は何ObjectArray
ですか?
タイプのC++オブジェクトがありますObjectArray
typedef map<int64_t, std::unique_ptr<Class1>> ObjectArray;
unique_ptr
タイプの新しいオブジェクトに a を作成し、それをタイプ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());
2 つの形式の違いは、キー0
が既にマップに存在する場合、前者は失敗し、2 番目の形式はその値を新しいもので上書きすることです。
C++14 では、式からstd::make_unique()
を構築する代わりに使用したい場合があります。例えば:unique_ptr
new
myMap[0] = std::make_unique<Class1>();
マップに挿入する既存のポインターを追加する場合は、std::move を使用する必要があります。
例えば:
std::unique_ptr<Class1> classPtr(new Class1);
myMap.insert(std::make_pair(0,std::move(classPtr)));