首页 > 解决方案 > 如何调整结构向量的大小?

问题描述

我试图调整我的结构向量的大小,但 VS 给我一个错误

Error   C2512   1>c:\program files (x86)\microsoft visual 
studio\2017\enterprise\vc\tools\msvc\14.11.25503\include\xmemory0(856): 
error C2512: 'tabuRecord::tabuRecord': no appropriate default constructor 
available

这是我的结构:

struct tabuRecord {
  int x;
  int y;
  int k;
  tabuRecord(int x1, int y1, int k1) { x = x1; y = y1; k = k1; }
};

这是我的调整大小功能:

void insertToTabu(vector<tabuRecord> &v, int sizeOfTabuList) {
  v.resize(sizeOfTabuList);
}

标签: c++vectorstructresize

解决方案


当您调用 时std::vector::resize(X),您是在要求 vector (至少,可能)创建X对象。vector 可以做到这一点的唯一方法是默认构造它们 - 因为你没有给它任何其他东西。而且由于您的结构没有默认构造函数,resize因此无法编译。

以防万一,您的结构没有默认构造函数,因为您已经声明了一个用户构造函数。


推荐阅读