LINUX.ORG.RU

Пересечение множеств из двух QMap.

 ,


0

1

Есть два QMap'а, часть пар ключ\значение которых пересекается. Как из этого получить QMap содержащий только пересечение этих множеств? Есть ли готовое решение в составе Qt, или писать алгоритм самому?

QMap::keys() вернёт тебе QList. QSet::fromList сделает из списка множество. А дальше QSet::intersect и получаешь пачку ключей, по которым проходишься и дёргаешь эл-ты QMap'ов.

Там строчек 10 кода будет.

Norgat ★★★★★ ()
Ответ на: комментарий от Norgat

Вот оно что, QSet::intersect это то, что нужно, спасибо! Хотя я думал что есть уже совсем готовое решение, типа функции, возвращающей пересечение.

flareguner ()
Ответ на: комментарий от flareguner

Ну может оно и есть, я не спец в Qt, просто полистал доки пару минут в поисках intersect :)

Norgat ★★★★★ ()
Ответ на: комментарий от Norgat

можно отсортировать ключи из двух мапов и оставить только те что повторяются

OxiD ★★★ ()

Держи студент!

QMap<int, int> map1, map2, resultMap; // У тебя свои определения (это копировать не надо)

foreach( const int key, map1.keys() ) { if( map2.contains(key) ) resultMap[key] = map2[key]; }

Надо только малость подключить голову и поправить «const int» на то что у тебя в определении первой мапы.

Khenty ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.