数据结构/容器选择
Data structure/Container choice
我有以下场景:
- 来自多个视频文件的数据需要保存在一个数据结构/集合中。
- 一个视频文件可以有1对多个视频流
- 每个流都有一个字段和值对。
Video1:
Stream1:
format mpeg
bitrate 700kb/s
resolution 1024x764
Stream2:
format mpeg
bitrate 600kb/s
resolution 800x600
Video2:
Stream1:
format mpeg
bitrate 700kb/s
resolution 1024x764
Stream2:
format mpeg
bitrate 600kb/s
resolution 800x600
这是我考虑保存的数据:
QVector<QVector<QStringList>>
其中QStringList
为值对(format, mpeg)。
Inside QVector
保存了流的多个对。
外部QVector
保存所有内容,即每个条目/索引是单个视频文件的数据。
我不确定这是否是保存数据的最佳方式,我猜集合中的集合中的集合不会非常高效。
有其他选择吗?
为什么不根据需要编写类呢?
class Stream
{
Format format;
Resolution res;
Bitrate br;
};
class Video
{
QVector<Stream> v_stream;
};
class VideoContainer
{
QVector<Video> v_video;
};
QVector需要连续定位数据,如经典的c数组。对于一般用途,建议使用QList而不是QVector,后者也提供基于索引的快速访问,但基于指针。
对于字段-值对,使用QMap代替StringList,后者更容易访问。如果您只使用文本属性,甚至可以使用QMap<QString,QVariant>
或QMap<QString,QString>
。
另外,正如三氯生所说,用QList
代替QVector
。最后的样式是QList<QList<QMap< QString,QVariant > > >
相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 使用选择排序对数组数据结构进行排序,但它不起作用
- 对于这个问题,是否有更好的数据结构和算法选择
- 哪种数据结构和设计用于选择最佳整数集
- 数据结构-选择排序方法
- 使用 QPair 和 QString 选择正确的数据结构
- 用于选择计算机组的数据结构
- 选择合适的数据结构
- 选择一个有效的数据结构来寻找韵律
- 选择合适的FIFO数据结构
- 如何根据c++项目的不同性能要求设计或选择数据结构
- 我应该使用什么数据结构来支持插入、删除和随机选择
- 选择合适的数据结构
- 数据结构/容器选择