C ++では、C#に相当するものは何byte[,]
ですか?私は変換を行おうとしていますが、学んでいます。誰か助けてもらえますか?
質問する
449 次
4 に答える
2
いくつかの方法を使用してエミュレートできます。
1つ:オブジェクトを使用することをお勧めします。ベクトルのベクトルを作成します。
std::vector <std::vector < std::uint8_t > > twoDArr;
2:オブジェクトなしで推奨される方法-バイトの配列:
std::uint8_t arr[width][height];
(これはCでも機能します。)
3:Cでは、これは動的に割り当てられた配列の唯一のオプションですが、C ++ではお勧めしません-Cとの互換性が必要な場合のみ:
const size_t w = 13;
const size_t h = 37;
uint8_t **arr = malloc(w * sizeof(arr[0]));
for (int i = 0; i < w; i++) {
arr[i] = malloc(h);
}
于 2012-12-23T22:12:55.630 に答える
2
ベクトルのベクトルを使用できます(2dベクトル)
2Dベクトルを埋めるには:
std::vector<std::vector<std::uint8_t> > dynamicArray;
for (int i = 0; i < m_nCurrentWidth; ++i)
{
std::vector<std::uint8_t> row;
for (int j = 0; j < m_nCurrentHeight; ++j)
{
row.push_back(0xFF);
}
dynamicArray.push_back(row);
}
そしてそれを横断するには:
for (int y = 0; y < m_nCurrentHeight; ++y)
{
const std::vector<std::uint8_t>& row = dynamicArray[y];
for (int x=0; x < m_nCurrentWidth; ++x)
{
std::cout << row[x] << " ";
}
std::cout << endl;
}
それが役に立てば幸い。
于 2012-12-23T22:25:04.367 に答える
1
std::vector<std::vector<unsigned char> >
于 2012-12-23T22:10:03.123 に答える
0
このような配列を作成できると思います。
unsigned char byteArray[][];
そして、このようにインスタンス化できます。
byteArray = {{byte1A,byte1B},{byte2A,byte2B},...,{byteNA,byteNB}};
于 2012-12-23T22:18:24.663 に答える