分配给std :: unique_ptr数组

时间:2018-07-28 04:40:05

标签: c++ arrays c++11 c++14 smart-pointers

struct MyStruct
{
    int x = 0;
}

std::array<std::unique_ptr<MyStruct>, 10> Arr;

// Arr[0] = ?

将对象分配给此类数组的语法是什么? My reference

2 个答案:

答案 0 :(得分:1)

飞翔的回答:

Arr[0].reset(new MyStruct);

雷米·勒博的答案:

Arr[0] = std::make_unique<MyStruct>(); // Since C++14

答案 1 :(得分:0)

或者

std::array<std::unique_ptr<MyStruct>, 10> Arr {
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>(),
  std::make_unique<MyStruct>()
};

为避免移动分配。