嵌套 QMap - 如何在不实例化的情况下插入
Nested QMap - How to insert without instantiating
QMap<QString,int> map;
QMap<int,QMap<QString,int>> table;
QMap<QString,int>::iterator iter = map.begin();
int i = 0;
while (iter != map.end())
{
if (condition) {
table.insert(i++,iter.key(),iter.value()); // <--- this is obviously wrong
else
++iter;
}
所以基本上我需要过滤地图中的数据并将它们作为新 QMap 作为 table QMap 中的值插入。
如何解决这个问题?
从 Qt 5.1 开始,当编译为 c++11 时,您可以 use an initializer list:
table.insert( i++, QMap<QString,int> {{iter.key(),iter.value()}} );
但是问题标题说"without instantiating",那是不可能的。这只是另一个构造函数。
QMap<QString,int> map;
QMap<int,QMap<QString,int>> table;
QMap<QString,int>::iterator iter = map.begin();
int i = 0;
while (iter != map.end())
{
if (condition) {
table.insert(i++,iter.key(),iter.value()); // <--- this is obviously wrong
else
++iter;
}
所以基本上我需要过滤地图中的数据并将它们作为新 QMap 作为 table QMap 中的值插入。 如何解决这个问题?
从 Qt 5.1 开始,当编译为 c++11 时,您可以 use an initializer list:
table.insert( i++, QMap<QString,int> {{iter.key(),iter.value()}} );
但是问题标题说"without instantiating",那是不可能的。这只是另一个构造函数。