Вложенный 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. Как с этим быть?


person normaluser    schedule 26.12.2019    source источник


Ответы (1)


Начиная с Qt 5.1, при компиляции как c++11 вы могли использовать список инициализаторов:

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

Но в заголовке вопроса написано «без создания экземпляра», а это невозможно. Это просто еще один конструктор.

person Former contributor    schedule 26.12.2019
comment
вышеприведенное возвращает ошибку отсутствия соответствующего конструктора. (Qt 5.14.0) - person normaluser; 27.12.2019
comment
Если вы используете Qmake (project.pro) вам нужно: CONFIG += c++11, если вы используете CMake, то set(CMAKE_CXX_STANDARD 11) и set(CMAKE_CXX_STANDARD_REQUIRED ON) - person Former contributor; 27.12.2019