什么是C#的字节[,]的C ++等价物?

时间:2012-12-23 22:07:27

标签: c++

在C ++中,C#' s byte[,]的等价物是什么?我试图进行转换,但我正在学习。有人可以帮忙吗?

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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;
}

希望它有所帮助。

答案 2 :(得分:1)

std::vector<std::vector<unsigned char> >

答案 3 :(得分:0)

我相信你可以像这样创建一个数组。

    unsigned char byteArray[][];

你可以像这样实例化它。

    byteArray = {{byte1A,byte1B},{byte2A,byte2B},...,{byteNA,byteNB}};