我想将二维char数组push_back放入双端队列。以下无效。应该如何定义m_message数据变量以命令push_back这些数据。

unsigned char message_data[2][1500]; //definition

func1(message_data[0]);
func1(message_data[1]);

std::deque<unsigned char*> m_messagedata;

m_messagedata.push_back(&message_data[0]);
m_messagedata.push_back(&message_data[1]);

最佳答案

您正在推回指针,而不是数组。如果这些数组消失,则指针将悬空。您没有告诉我们您的问题是什么,但是很可能就是这样。

同样,您似乎在声明两个具有相同名称且边界不同的数组,其中之一是非法的(0)。我认为这是您的问题而不是原始代码的错误:请下次发布your real testcase

如今,C ++可以包装以前无法复制的数组,从而可以将它们直接存储在标准容器中;该包装器称为std::array。因此,请尝试:

#include <array>
#include <deque>

typedef std::array<unsigned char, 1500> ArrayType;

int main()
{
   std::array<ArrayType, 2> message_data;

   std::deque<ArrayType> q;
   q.push_back(message_data[0]);
   q.push_back(message_data[1]);
}


注意,容器现在包含两个内部数组的副本。

关于c++ - 使用双端队列插入无符号字符数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22842884/

10-12 12:20