QByteArray
包含单个字节,如果我们QList
unsigned chars
也保留单个字节。
当QByteArray
成为QList<unsigned char>
时,QByteArray
存在的原因是什么?
QList<unsigned char>
和QVector<unsigned char>
或/var/www/html
之间的区别是什么?
我错过了哪些要点?
答案 0 :(得分:2)
QByteArray
是char*
的有用包装。适用于QDataStream
流式传输,字符串操作和其他数据管理。
从文档中你也可以找到:
在幕后,它始终确保数据后跟a '\ 0'终止符,并使用隐式共享(copy-on-write)来减少 内存使用并避免不必要的数据复制。
QList
,起初在内存中不是线性的(后续)(你应该使用QVector
),并且没有这样有用的API
答案 1 :(得分:1)
QList
在堆上分配内存并且不保证任何数据位置,因此使用QList
和QByteArray
之间可能存在性能差异。
来自:http://doc.qt.io/qt-5/qlist.html#details
QVector应该是您的默认首选。 QVector通常会提供比QList更好的性能,因为QVector总是将其项顺序存储在内存中,其中QList将在堆上分配其项,除非sizeof(T)&lt; = sizeof(void *)和T已被声明为使用Q_DECLARE_TYPEINFO的Q_MOVABLE_TYPE或Q_PRIMITIVE_TYPE。有关解释,请参阅使用QList的优点和缺点。
QByteArray
还提供了处理字节(以及一般字符串)的便捷方法。