QMap :: insertMulti还是QMultiMap?

can*_*man 6 c++ qt qmap qmultimap

我应该在QMap :: insertMulti和QMultiMap之间使用什么来处理:

2 - > abc
2 - > def
3 - > ghi
3 - > jkl

进入2个解决方案的区别是什么?

Pio*_*ost 7

阅读容器类:

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.
Run Code Online (Sandbox Code Playgroud)

看起来两者都可以完成这项工作.在本文档中还有算法复杂性部分,您可以看到这两个类具有相同的复杂性.

我会选择QMultiMap更好地记录我将使用相同的键保存多个值的事实.


Sar*_*fan 5

两者都可以达到这个目的.QMultiMap实际上是QMap的子类.

如果您愿意为单个键设置多个值,则可以使用:QMap:用于插入使用insertMulti QMultiMap:用于插入使用插入

如果您愿意为单个键设置单个值,则可以使用:QMap:用于插入使用insert QMultiMap:用于插入使用替换

你可以看到两者都可以同时服务.但是,每个都具有与其名称匹配的唯一默认行为.而且,每个都有一些便于单/多的方法或操作符.

最好根据您的需要选择类型.这是一个很好的做法.例如,如果您使用QMap存储单个键多个值,那么通过您的类成员的其他人可能会得到您愿意保存单个键值对的印象(来自数据类型)同样,如果您使用QMultiMap任何阅读该定义的人都可以理解数据对于同一个密钥具有多个值.