Название: Сравнение QStringList с другим QStringList Отправлено: jatsuk от Апрель 26, 2011, 15:37 Есть 2 QStringList. надо сделать так, чтобы ,например присваивалась n=1, если в первом QStringList есть все строки, какие есть во втором.
Например QStringList1 вася петя маша юля QStringList2 петя маша n=1. Если хотя бы 1 строки (например маши) нет в первой QStringList1, то не выполняется. Хотел сделать через циклы, расписал на пол листка. слишком много циклов и сравнений. В Qt по любому есть какая нибудь функция, которая это делает, только какая ???? Название: Re: Сравнение QStringList с другим QStringList Отправлено: madRoger от Апрель 26, 2011, 15:54 можно извратиться так:
Код: if( QStringList1.toSet().intersect(QStringList2.toSet()).count() == QStringList2.count() ) n=1; Название: Re: Сравнение QStringList с другим QStringList Отправлено: mutineer от Апрель 26, 2011, 16:00 можно извратиться так: Код: if( QStringList1.toSet().intersect(QStringList2.toSet()).count() == QStringList2.count() ) n=1; Если уже приводить к QSet, то у него есть замечательный метод Код
Еще можно перебрать все элементы первого списка и при помощи Код проверить есть ли они во втором. Итого один цикл Название: Re: Сравнение QStringList с другим QStringList Отправлено: madRoger от Апрель 26, 2011, 16:05 метод contains есть и у QStringList. Если им пользоваться, то преобразовывать ничего не надо. Но тогда будет цикл.
Название: Re: Сравнение QStringList с другим QStringList Отправлено: Igors от Апрель 26, 2011, 16:21 можно извратиться так: Причесать такКод: if( QStringList1.toSet().intersect(QStringList2.toSet()).count() == QStringList2.count() ) n=1; Код Насчет др. постов в этой теме. Больно видеть что Вы делаете с производительностью. Цитировать Вам бы, товарищ младший лейтенант, не летать, а на тракторе ездить. У трактора запас прочности большой, для таких посадок вполне подходящий. Страдает машина - понимать надо. Название: Re: Сравнение QStringList с другим QStringList Отправлено: madRoger от Апрель 26, 2011, 16:30 Цитировать Больно видеть что Вы делаете с производительностью. А про производительность никто и не говорил. Автору темы нужно минимум кода.Название: Re: Сравнение QStringList с другим QStringList Отправлено: SABROG от Апрель 26, 2011, 16:33 qEqual() не подойдет?
Название: Re: Сравнение QStringList с другим QStringList Отправлено: mutineer от Апрель 26, 2011, 18:01 Насчет др. постов в этой теме. Больно видеть что Вы делаете с производительностью. То есть пересечение множеств и сравнение с размером это быстрее, чем contains? Название: Re: Сравнение QStringList с другим QStringList Отправлено: mutineer от Апрель 26, 2011, 18:02 метод contains есть и у QStringList. Если им пользоваться, то преобразовывать ничего не надо. Но тогда будет цикл. Я про него и говорил Название: Re: Сравнение QStringList с другим QStringList Отправлено: Igors от Апрель 27, 2011, 06:16 То есть пересечение множеств и сравнение с размером это быстрее, чем contains? contains для QStringList - это просто линейный перебор (как итератором или циклом for). Если контейнеры всего по 1000 элементов, то среднее число сравнений 1000 * 1000 / 2 (уже пол-миллиона). По-хорошему и intersect там не нужен. Длиннее но аккуратнее такКод
|