是否有QT C 数据容器可用于动态大小结构
Is there a Qt C++ data container to use in dynamic size structs?
我认为社区应该确定和解决这个问题,但似乎我正在使用错误的关键字搜索,或者真的很难以捉摸。
问题很简单。我想定义一个结构,其中应定义动态数据容器(向量,列表,队列,任何作品)。
#pragma pack(1)
struct Example
{
int foo;
QVector<int> bar;
};
我需要将整数值插入此向量(或使用任何其他QT/STL容器),并且我想将该结构的内容复制到字节数组,以便将其原始数据写入文件。
。我遇到的是,当我编写以下代码时:
Example exstr;
qDebug()<<sizeof(exstr);
exstr.bar.push_back(12);
exstr.bar.push_back(5);
qDebug()<<sizeof(exstr);
它显示值:
8
8
现在,这可能是因为QVector只是一个普通的指针,它指向连续数据,但我需要的是动态可重复可重复的数据容器(这也可以调整其所在的结构大小),并允许我使用内容字节。当我尝试序列化时字节。
感谢提前的帮助。
QDATASTREAM 允许您序列化某些QT数据类型:序列化QT数据类型
QDataStream stream(&file); // we will serialize the data into the file
stream << your_qvector_obj;
//...
QVector<int> new_vec;
stream >> new_vec;
//...
您在QVector的正确轨道上。STL矢量类也将起作用。这两个类都可以保证将其值存储在连续的内存中。
对于qVector,您需要这样的东西:
memcpy (dest, bar.data(), bar.count () * sizeof (int));
对于stl矢量,您要获取第一个元素的地址:
memcpy (dest, &bar[0], bar.size () * sizeof (int));
在这两种情况下," dest"必须足够大才能保存要复制的数据。我正在以此为例以复制为例;如果您只需要指向数据的指针,则qVector ::数据为STL向量提供了第一个元素的地址提供。
相关文章:
- 开放 CV 中的动态内存分配,用于视频处理
- 动态分配列表 - 创建一个函数,用于删除所有包含偶数值的元素
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 为什么std::begin()和std::end()适用于固定数组,而不适用于动态数组
- 如何将大括号初始值设定项用于动态大小数组和新数组?
- Tensorflow C++ 用于动态输入形状的 API
- 用于验证类型的动态强制转换
- 用于创建 HDF5 数据集的 4 维 c++ 数组的动态内存分配
- 用于保存按下的键的动态缓冲区 - c++
- 单个或单个头用于链表的动态数组
- 用于初始化类内动态数组的函数
- 拥有用于动态机会/概率的简单负载均衡器(在C++中,但语言无关)
- 动态分配数组中的运行时错误,用于删除 C++ 中的元素
- 如何删除用于动态分配对象的智能指针
- 是否有QT C 数据容器可用于动态大小结构
- 用于字符串比较的动态编程
- 在"动态初始值设定项"中初始化的升压记录器不适用于宽字符
- 链表与动态数组用于使用向量类实现堆栈
- 动态分配内存,用于存储使用 WinHttpReadData 下载的 HTML 源代码
- 如何使用 apache avro GenericRecord 用于动态数据