小编use*_*261的帖子

如何调整unique_ptr向量的向量?

如何在一行中正确调整 unique_ptr 向量的大小,而 gcc 不会给出有关已删除函数的编译错误?

vector<vector<unique_ptr<A> >> a;
a.resize(..... )
Run Code Online (Sandbox Code Playgroud)

更新:这是我使用的代码,可以正常工作。

  int width, height;
  vector<vector<unique_ptr<A> >> a;
  a.resize(width);
  for (int i = 0; i < width; i++) {
      for (int j = 0; j < height; j++) {
          a.at(i).emplace_back(new A());
Run Code Online (Sandbox Code Playgroud)

如果可能,我想一次性调整大小,就像调整向量的向量一样;

vector<vector<int>> intObj;
intObj.resize(width, vector<int>(height, int()));
Run Code Online (Sandbox Code Playgroud)

但是每当我尝试使用以下方法调整上述向量的大小时,都会出现此错误;

a.resize(x, vector<unique_ptr<A>>(y, unique_ptr<A>()));

error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = A; _Dp = std::default_delete<A>]’
Run Code Online (Sandbox Code Playgroud)

谢谢。

c++ vector unique-ptr

5
推荐指数
1
解决办法
4047
查看次数

标签 统计

c++ ×1

unique-ptr ×1

vector ×1