私はベクトルの配列を定義し、この配列を関数に渡したいと思います。 ?ベクトルの配列を関数に渡す方法
void gridlist(std::vector<int> *grid, int rows, int cols){
..... }
int rows=4;
int cols=5;
std::vector<int> grid[rows][cols];
gridlist(grid,rows,cols);
関数に配列を渡すために私のために働いている唯一の方法は、(*)ポインタであった。
は、ここに私のコードです。
私は以下の説明に従って別の方法を試みました:Passing a 2D array to a C++ functionしかし、私はそれを動作させることはできませんでした。
私はいつも次のエラーを取得する:
could not convert '(std::vector<int> (*)[cols])(& grid)' from 'std::vector<int> (*)[cols]' to 'std::vector<int>'
gridlist(grid,rows, cols);
私は私が間違っているのかわかりません。何が、一般的に、その作業を行う最も安全な方法と考えられていますか? VLA(可変長配列)は、C++での非標準的なものであるためである
template<int rows, int cols>
void gridlist(std::vector<int> (&grid)[rows][cols]){
}
int main()
{
const int rows=4;
const int cols=5;
std::vector<int> grid[rows][cols];
gridlist(grid);
}
あなたのコードに追加の変更がある、int rows=4;
const int rows=4;
に:
ベクトルのベクトルまたは 'std :: array'を使うと良いでしょう。 – MikeCAT
std :: vector ** gridを使って、良い2つ星プログラマがしようとしましたか、配列のサイズを型パラメータとして渡しますか? –
lorro
ベクトルのベクトルを渡すのはなぜですか? –