我应该在 QMap::insertMulti 和 QMultiMap 之间使用什么来处理:
2 -> abc
2 -> def
3 -> ghi
3 -> jkl
输入 2 个解决方案有什么区别?
阅读容器类:
QMap<Key, T>
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative.
QMultiMap<Key, T>
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values.
看起来两者都可以完成这项工作。在本文档中,还有算法复杂性部分,您可以在其中看到两个类具有相同的复杂性。
我会选择QMultiMap
更好地记录我将使用同一个键保存多个值的事实。
两者都可以达到这个目的。QMultiMap 实际上是 QMap 的子类。
如果您愿意为单个键设置多个值,您可以使用: QMap :用于插入,使用 insertMulti QMultiMap :用于插入,使用 insert
如果您愿意为单个键设置单个值,您可以使用: QMap :用于插入使用 insert QMultiMap :用于插入使用替换
您可以看到两者都可以达到两个目的。但是,每个都有与其名称相匹配的独特默认行为。此外,每个都有一些便于单/多的方法或运算符。
最好根据需要选择类型。这是一个很好的做法。例如,如果您使用 QMap 来存储单键多个值,其他一些正在查看您的类成员的人可能会觉得您愿意保存单键值对(从数据类型)类似地,如果您使用 QMultiMap ,任何阅读定义的人都可以理解数据对于同一个键将具有多个值。