使用 deque 插入无符号字符数组
Using deque to insert unsigned char arrays
我想将二维字符数组push_back成deque。以下方法不起作用。应如何定义数据变量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)。我认为这是您的问题的错误,而不是您的原始代码:请下次发布您的真实测试用例。
如今,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]);
}
请注意,容器现在包含两个内部数组的副本。
其他解决方案是正确的,但由于您希望代码尽可能保持不变,因此您可以这样做:
unsigned char message_data[2][1500]; //definition
//using CharArrPtr = unsigned char(*)[1500];
typedef unsigned char (*CharArrPtr)[1500];
std::deque<CharArrPtr> m_messagedata;
m_messagedata.push_back(&message_data[0]);
m_messagedata.push_back(&message_data[1]);
如前所述,这里所做的是将指针推送到可能的局部变量。因此,您必须确保它们在使用时仍然有效。
相关文章:
- 指向指向字符数组的指针数组的指针
- 比较字符数组
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用无符号字符数组有效存储内存
- 错误:字符数组的初始值设定项太多
- 对字符数组中的元素执行逐位操作
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- C++ 传递二维字符数组
- 无法在 C++ 中输入字符数组
- 字符数组中的元素数
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 使用字符数组作为 Map 中的键
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 按顺序声明的字符数组重叠
- 在 C++ 中字符串的大小与字符数组的大小
- 寻找一种更好的方法来表示无符号字符数组
- 如何打印 2D 字符数组C++
- 从字符数组的元素中减去'a'是什么意思
- 我是否不正确地集中了这些字符数组?