首页 > 解决方案 > 嵌套 QMap - 如何在不实例化的情况下插入

问题描述

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 作为表 QMap 中的值插入。如何解决这个问题?

标签: qtqmap

解决方案


从 Qt 5.1 开始,当编译为 c++11 时,您可以使用初始化列表

table.insert( i++, QMap<QString,int> {{iter.key(),iter.value()}} );

但是问题标题说“没有实例化”,这是不可能的。这只是另一个构造函数。


推荐阅读