在 C++ 中,C# 的等价物是byte[,]
什么?我正在尝试进行转换,但我正在学习。有人可以帮忙吗?
问问题
449 次
4 回答
2
您可以使用以下几种方法来模拟它:
一:推荐使用对象。制作一个向量的向量:
std::vector <std::vector < std::uint8_t > > twoDArr;
二:不带对象的推荐方式——字节数组:
std::uint8_t arr[width][height];
(这也适用于 C 语言。)
三:在 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 向量)
填充二维向量:
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 回答