を管理するためにunique_ptrを使用:私は、次の方法を使用して三次元を割り当てた3次元アレイ
board = new char**[depth];
for (int d = 0; d < depth; d++)
{
board[d] = new char*[rows];
for (int i = 0; i < rows; i++) {
board[d][i] = new char[cols];
for (int j = 0; j < cols; j++) {
board[d][i][j] = 'k';
}
}
}
は今、私はそれを管理するためにunique_ptrをを使用したいが、私は開始する方法がわかりませんそのような構造は、unique_ptrが公開するインタフェースを使用します。
std::unique_ptr<std::unique_ptr<std::unique_ptr<char[]>[]>[]>board =
std::make_unique<std::unique_ptr<std::unique_ptr<char[]>[]>[]>(depth);
for (int d = 0; d < depth; d++)
{
board[d] = std::make_unique<std::unique_ptr<char[]>[]>(rows);
for (int i = 0; i < rows; i++) {
board[d][i] = std::make_unique<char[]>(cols);
for (int j = 0; j < cols; j++) {
board[d][i][j] = 'k';
}
}
}
を、これは意志、多かれ少なかれ、あなたが期待するように動作します:
これに 'std :: unique_ptr'を使用しないで' std :: vector'を使用してください。 – SergeyA
@SergeyAどういう意味ですか?私は3次元配列を割り当てています。どのようにベクトルを使うことができますか? – primeQuestion
各行/列の寸法を変えてもよろしいですか? そうでなければ、 'depth * rows * cols'をワンショットで割り当てることができます。 – erenon