「std::vector 2d」を「2d c array」へのポインタとして関数に渡す方法はありますか。
std::vector 1d を c 配列へのポインターとして関数に渡すことができることを知っています。たとえば、関数:
void foo(char* str); //requires the size of str to be 100 chars
std::vector<char> str_;
str_.resize(100);
foo(&str_[0]); //works
関数のように2dベクトルも可能かどうか疑問に思っています
void foo(char** arr_2d);
とベクトル
std::vector<std::vector<char>> vector_2d;
次のコードを試しましたが、ヒープの破損に関連するエラーが発生しています。
std::vector<std::vector<unsigned char>> vector_2d;
//assuming function expects the size of the vector to be 10x10
vector_2d.resize(10);
for(int i=0;i<10;i++)
{
vector_2d[i].resize(10);
}
foo(&vector_2d[0]);//error here