我正在开发一个性能至关重要的程序。我在那里使用 QMultiMap
,这是Qt框架提供的一个类,类似于std::map
.
QMultiMap<int, SomeClass> heavilyUsedMap;
void prepareMap()
{
...
heavilyUsedMap.reserve(nEntries); // There is no reserve.
// fill heavilyUsedMap with a known number of entries.
}
void useMap()
{
// computations
heavilyUsedMap.clear();
}
我使用 prepareMap()
很多。当我想优化时,为 heavilyUsedMap
分配内存是有意义的.
确实是容器:QVector<T>
, QHash<Key, T>
, QSet<T>
, QString
, 和 QByteArray
都提供了这种可能性,但是QMap<Key, T>
和 QMultiMap<Key, T>
不要。
为什么会这样,我如何为 QMap<Key, T>
预分配内存?和 QMultiMap<Key, T>
?
最佳答案
map 是一个基于节点的容器,因此每个元素都是单独分配的。没有“预分配”这样的东西,它没有任何优势(即花费的总时间是相同的)。
关于c++ - 如何为 std::map 或 QMap 预分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089728/