You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中调整自定义类型的三维vector大小?

修复三维vector初始化问题

你的代码存在两个关键问题,导致无法正确创建目标三维vector:

  1. 变量名大小写不匹配:定义的三维vector变量是Map(首字母大写),但调用resize时用的是map(全小写),C++区分大小写,这会直接触发编译错误。
  2. resize参数类型错误:三维vector的元素是二维vector(vector<vector<Piece>>),但你传入的第二个参数是vector<Piece>(rows, colm),类型不匹配;同时colm作为Piece的初始化参数,除非Piece类有接受int的构造函数,否则也会报错。

根据你的需求(创建包含x个二维Piece类型vector的三维vector,每个二维vector按rows大小调整),给出两种正确写法:

写法1:每个二维vector初始化为rows个空的一维vector

如果只需要每个二维vector有rows个空位,后续再填充列数据:

int x; 
int rows;
int colm;

vector<vector<vector<Piece>>> Map;

// 调整为x个二维vector,每个二维vector包含rows个空的vector<Piece>
Map.resize(x, vector<vector<Piece>>(rows));

写法2:每个二维vector直接初始化为rows行colm列的Piece矩阵

如果需要每个二维vector直接是rows行、colm列的Piece结构(每个位置的Piece默认构造):

int x; 
int rows;
int colm;

vector<vector<vector<Piece>>> Map;

// x个二维vector,每个二维vector有rows个元素,每个元素是包含colm个默认构造Piece的vector
Map.resize(x, vector<vector<Piece>>(rows, vector<Piece>(colm)));

额外注意

  • 确保x、rows、colm在调用resize前已经被正确赋值,否则会使用未初始化的垃圾值,导致异常。
  • 如果Piece没有默认构造函数,需要在初始化vector<Piece>时传入合法的构造参数,比如vector<Piece>(colm, Piece(/*你的构造参数*/))。

内容的提问来源于stack exchange,提问作者Adam Gonzal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:20:56