如何在构造函数中构建动态二维数组?



构建记忆游戏。用户可以在他们的"棋盘"上输入他们想发牌的数量。我取输入数(int size)),并创建一个2d对象数组作为游戏板,它存储在构造函数中。我的下一步工作后,这将是取代数组元素与"处理"的卡对象显示。**接收数组的初始化,我很好奇为什么。你有什么建议,为什么或更好的方法来写这个?* *

.cpp文件相关代码

#include <iostream>
#include "GameBoard.h"
#include <math.h> 

using namespace std;
GameBoard::GameBoard(int size)
{
if (size % 2 != 0)
{
size++;
}
int row;
int col;
row = 4;
col = ceil(size/4);

Card gameBoard = new Card*[row];
int i;
for(i=0; i<row; i++){
Card gameBoard[i] = new Card[col];
}

. h文件
#ifndef GameBoard_h
#define GameBoard_h
#include "Deck.h"
#include <iostream>

using namespace std;
class GameBoard{
private:


Card **gameBoard; 
Deck deck; 
Card card;
int CardsToDeal;


public:
GameBoard(int size); 
GameBoard();
void initializeBoard();
};
#endif

如果在编译时知道大小,则使用std::array。当你不使用std::vector时。这些当然可以嵌套,如:

std::array<std::vector<Card>, 4> gameBoard;

如果数字或"行"小的可以在构造函数初始化列表中直接初始化:

GameBoard::GameBoard(int size)
: gameBoard {
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0)),
std::vector<Card>(std::ceil(size / 4.0))
}
{
// Rest of constructor...
}

否则,让数组默认构造,并在循环的构造函数体中设置vector:

GameBoard::GameBoard(int size)
{
int columns = std::ceil(size / 4.0);
for (auto& card_vector : gameBoard)
{
card_vector.resize(columns);
}
// Rest of constructor...
}

相关内容

  • 没有找到相关文章

最新更新