C ++ - 多维数组和可变长度?

时间:2014-03-18 16:08:26

标签: c++ multidimensional-array

所以,我正在处理一个代码库,我们试图将几个代码库合并到一个整齐的堆栈中。我遇到了我们使用的BYTE阵列的问题。我们的东西是基于字节数组的通信,所以我们的每个应用程序都存储它需要发送的消息,如下所示:

BYTE arr[] = {0x00, 0x01, 0x02};

所以现在,我将所有数组一起粉碎成阵列数组,试图将它们组合在一起,如下所示:

BYTE groupOneArrs[][15] = 
{
   {0x01, 0x02, 0x03},
};

BYTE groupTwoArrs[][15] = 
{
   {0xFF, 0xA9, 0xAA},
};

等等。但是,我遇到了问题,因为必须保留各个消息的大小,因为为了使消息被认为是有效的,它们必须与我们定义它们的长度相同。我通过使用每个元素的实际长度定义一个int数组来解决这个问题,但它很脏。有没有更简单的方法来存储这些2D数组,这将保留每个单独数组的长度?

编辑:所以它听起来像我在VS 2008中的SOL和头文件中的可变长度2D数组。有没有办法解决这个问题,例如结构?

之类的东西
struct Message{
   byte message[20];
   int size;
}

然后将其初始化为......

Message messages[] = {
   {{0x01, 0x02, 0x03}, 3},
};

嗯,我应该说,我尝试过类似的东西,它爆炸了。但无论如何,这样的事情。我只是不想为每个数组创建变量名只是为了保留大小,这看起来很傻。

1 个答案:

答案 0 :(得分:0)

使用邻接列表,而不是制作2D数组。 vector应该是最好的。它们在形成邻接列表方面很方便。