Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QMap::insertMulti还是QMultiMap?_C++_Qt_Qmap_Qmultimap - Fatal编程技术网

C++ QMap::insertMulti还是QMultiMap?

C++ QMap::insertMulti还是QMultiMap?,c++,qt,qmap,qmultimap,C++,Qt,Qmap,Qmultimap,我应该在QMap::insertMulti和QMultiMap之间使用什么来处理: 2->abc 2->def 3->ghi 3->jkl 输入这两种解决方案有什么区别?两者都可以达到此目的。QMultiMap实际上是QMap的一个子类 如果您愿意为单个键设置多个值,则可以使用: QMap:用于插入使用insertMulti QMultiMap:用于插入使用insert 如果您愿意将单个值用于单个键,则可以使用: QMap:用于插入使用insert QMultiMap:用于插入使用替换 您可以看

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

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


输入这两种解决方案有什么区别?

两者都可以达到此目的。QMultiMap实际上是QMap的一个子类

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

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

您可以看到,两者都可以满足这两个目的。但是,每个都有与名称匹配的唯一默认行为。此外,每种方法都有一些方法或运算符,这些方法或运算符便于单个/多个操作

最好根据需要选择类型。这是一个很好的做法。例如,如果您使用QMap存储单键多值,则查看类成员的其他人可能会觉得您愿意保存单键-值对(从数据类型) 类似地,如果使用QMultiMap,任何阅读该定义的人都会认为数据对于同一个键将具有多个值。

阅读:

QMap
这提供了一个字典(关联数组),将Key类型的键映射到T类型的值。通常每个键都与一个值关联。QMap按键顺序存储其数据;如果顺序无关紧要,QHash是一个更快的选择。
QMultiMap
这是QMap的一个方便的子类,它为多值映射提供了一个很好的接口,即一个键可以与多个值关联的映射。
看起来两者都能胜任。在本文档的另一部分中,您可以看到这两个类具有相同的复杂性

我会选择
QMultiMap
,只是为了更好地记录我将用同一个键保存多个值的事实

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.