Qt QByteArray和QList之间有什么区别<;无符号字符>;或QVector<;无符号字符>;?
Qt QByteArray和QList之间有什么区别<;无符号字符>;或QVector<;无符号字符>;?,qt,qlist,qbytearray,Qt,Qlist,Qbytearray,QByteArray保存单个字节,如果我们制作一个QList的无符号字符,它也会保存单个字节 当可以创建QList时,存在QByteArray的原因是什么? QByteArray和QList或QVector之间有什么区别 我遗漏了什么?QList在堆上分配内存,并且不保证任何数据位置,因此使用QList和QByteArray之间可能存在性能差异 发件人: QVector应该是默认的第一选择。QVector通常比QList提供更好的性能,因为QVector总是在内存中顺序存储其项,其中QList将
QByteArray
保存单个字节,如果我们制作一个QList
的无符号字符
,它也会保存单个字节
当可以创建QList
时,存在QByteArray
的原因是什么?QByteArray
和QList
或QVector
之间有什么区别
我遗漏了什么?
QList
在堆上分配内存,并且不保证任何数据位置,因此使用QList
和QByteArray
之间可能存在性能差异
发件人:
QVector应该是默认的第一选择。QVector通常比QList提供更好的性能,因为QVector总是在内存中顺序存储其项,其中QList将在堆上分配其项,除非sizeof(T)
QList
在堆上分配内存,并且不保证任何数据位置,因此,使用QList
和QByteArray
之间可能存在性能差异
发件人:
QVector应该是默认的第一选择。QVector通常比QList提供更好的性能,因为QVector总是在内存中顺序存储其项,QList将在堆上分配其项,除非sizeof(T)
QByteArray
是char*
的有用包装器。适用于使用QDataStream
进行流式处理、字符串操作和其他数据管理。
从这些文档中,您还可以发现:
在幕后,它始终确保数据后面有
“\0”终止符,并使用隐式共享(写入时复制)来减少
内存使用和避免不必要的数据复制
QList
,首先在内存中不是线性的(后续的)(您应该使用QVector
),并且没有这样有用的APIQByteArray
是一个围绕char*
的有用包装器。适用于使用QDataStream
进行流式处理、字符串操作和其他数据管理。
从这些文档中,您还可以发现:
在幕后,它始终确保数据后面有
“\0”终止符,并使用隐式共享(写入时复制)来减少
内存使用和避免不必要的数据复制
QList
,首先在内存中不是线性的(后续的)(您应该使用QVector
),并且没有这样有用的API“QByteArray”专门用于字符串操作,“QList”不是(替换,fromNumber,左/中/右)。因此,这就像说“当我们可以使用std::vector
时,为什么会有std::string
”@Zaiborg您能列出一些主要的区别吗?'QByteArray'专门处理字符串操作,'QList'不是(替换,fromNumber,左/中/右)。因此,这就像说“当我们可以使用std::vector
时,为什么会有std::string
”@Zaiborg您能列出一些主要的区别吗?不保证任何数据位置
请参考qt的文档解释这一点。谢谢。QVector应该是您默认的首选。QVector通常会比QList提供更好的性能,因为QVector总是在内存中按顺序存储其项,QList将在堆上分配其项,除非sizeof(T),在这种情况下,是否意味着QVector
将与QByteArray
相同?不保证任何数据位置
请参考qt的文档解释这一点。谢谢。QVector应该是您默认的首选。QVector通常会比QList提供更好的性能,因为QVector总是在内存中按顺序存储其项,QList将在堆上分配其项,除非sizeof(T),在这种情况下,是否意味着QVector
将与QByteArray
相同?这一切是否也适用于QVector?@theindependentquarius是的,列表和向量之间唯一的主要区别是内存存储这一切是否也适用于QVector?@theindependentquarius是的,列表和向量之间唯一的主要区别是内存存储