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
),并且没有这样有用的API

QByteArray
是一个围绕
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是的,列表和向量之间唯一的主要区别是内存存储