Surreal
Все значения == все элементы, порядок не важен?
ᅟ
Порядок элементов в листах разный
Surreal
Так у вас две строки или два листа строк?
ᅟ
Два листа
ᅟ
Но на самом деле там задача чуть сложнее. из БД берется лист, и сравнивается с источником (тоже лист), и так идет перебор по БД пока не найдется подходящий лист
ᅟ
Вот пока что есть
Surreal
Какой-то трэш. Опишите лучше задачу.
ᅟ
Задача такая: Есть N кабинетов, у каждого кабинета есть свои свойства (наличие компьютеров, радиотехники и т.п). Задача такая. Пользователь вводит свойства которые нужны - получает номер кабинета
Surreal
Ну так и делайте селект в базу по свойствам.
ᅟ
Использую БД SQLITE. там таблица roms в ней столбцы specs (свойства) и num (номер кабинета)
Surreal
Нехер их так забивать.
ᅟ
А как ?
ᅟ
В таком случае просто набор нужных свойств должен быть индентичен тому что в БД. А по факту их может быть больше.
Surreal
Можно какую-нибудь интовую маску придумать, можно тупо каждое свойство отдельным булом.
ᅟ
Можно какую-нибудь интовую маску придумать, можно тупо каждое свойство отдельным булом.
Думал на счет интовой маски, но там мусор в БД будет. Та же история с отдельным булом под свойство. Тогда таблица будет расти, и работа с query.value() в слепую
Surreal
А крутиться в while, конвертируя листы в сеты на каждой итерации - это нормально?
Surreal
Делайте нормальную структуру бд и будет вам счастье. Проблем с query.value() не вижу никаких.
Surreal
Сделать просто enum со списком свойств и все.
ᅟ
Кол-Во свойств динамическое
ᅟ
Т.е ради двух-трех свойсвт делать таблицу с 100500 стоблцами - говнокод
ᅟ
Парсинг по StringList наиболее удобный вариант
Nikita
Тогда сортируй оба листа и сравнивай поиндексно
Surreal
Можно на каждое свойство создавать таблицу, в которой будет только одно поле - номера аудиторий с этим свойством.
Dr. Friedrich
Мне кажется, он хочет вхождение множеств проверить. Кажется, в стандартной библиотеке есть такие функции.
Surreal
Можно каждому свойству присвоить свой номер бита, создавать маску выбранных свойств, потом делать селект where ('smthg' & paramMask) = paramMask
Evgenii
1, 2, 5 != 1, 2, 4, 5
левый указатель увеличиваем если элементы равны, правый если правый меньше левого, если левый больше возвращаем false
Surreal
левый указатель увеличиваем если элементы равны, правый если правый меньше левого, если левый больше возвращаем false
Да это трэш все равно. Перебирать записи, пока не попадется нужная, что может быть лучше.
Surreal
n^2 vs n log n
Вместо одного селекта в бд.
Surreal
Где O(n), если нет сортировки по маскам + чистый и адекватный код.
Anonymous
Вот пока что есть
это програма С++
Berkus
Вместо одного селекта в бд.
Это действительно на уровне дизайна бд решается прекрасно, в коде остается только один селект
Constantine
И практический порядок N
Constantine
Если на все наплевать, просто линейный поиск, храним все упорядоченно в векторе и std::set_intersection
Влад
Бандиты, есть конфочка функционально программирования?? (haskell или Erlang)
melvin
ищи
Constantine
C++ функциональный язык, в нем же есть функции :)
Vladislav
Влад
Спасибо)
Ivan
Кстати, парни. Вы как приватные члены класса именуете? mHeight или m_height. В Qt несмотря на camelCase приватные пишут через нижнее подчеркивание
Constantine
3872 конвенции
Danil
У нас на проекте приватные поля в _lowerCamelCase
Constantine
с подчеркивания?
Danil
Yep
Constantine
никогда не любил конвенции, начинающие с подчеркивания что-либо
Constantine
хотя выбор очень сильно зависит от среды разработки
Constantine
например, отличная идея начинать с zzz_ если автодополнение косячит
Constantine
у нас такое имя для полей, которые не те хоббиты, что вы ищете
Ivan
Plain C++
Constantine
вообще возьмите какую-нибудь готовую конвенцию и используйте, например, гугла
Constantine
вроде это не так актуально для _ полей класса
Constantine
__ будут потенциальные проблемы, да
Constantine
введут __super в стандарт 😆
Surreal
Угу. Поэтому у меня уродский код: private: int name_; void doSmthng_();
Constantine
Угу. Поэтому у меня уродский код: private: int name_; void doSmthng_();
а смысл вообще приватные поля отдельно именовать?
Constantine
хм... в конструкторе можно name(name)
Surreal
Был такой код-стайл где-то, я вот и привык.
Constantine
знаю, что знаешь :)
Constantine
мой вижачок любезно не показывает в куче случаев все, что нельзя вызвать снаружи
Vladislav
А есть форматтеры, которые энфорсят нейминг конвеншны?
Constantine
А есть форматтеры, которые энфорсят нейминг конвеншны?
формально говоря, да, если они генерируют код сами
Constantine
Вообще, если ситуация как сейчас в плюсах продолжится, я лично буду всем предлагать тупо отказываться от самостоятельного написания .h файлов в 90% кода и использовать цепочки описание - генератор
Constantine
Есть куча плюсов, например, большая часть имен может быть отрезолвана автоматом и поэтому все include прогенерированы
Constantine
Так что перекомпиляция не будет превращаться в ад из-за того, что кто-то вместо forward declaration инклуднул definition класса где не надо
Constantine
Не говоря о том, что можно автоматически где надо компилировать сериализаторы, компараторы, сравнивалки и прочие случае "где моя интроспекция, компилятор?"
Крылатый
Любопытная штука https://github.com/tower120/DeferredUniquePtr
Крылатый
Дискасс
Nikita
на рит никто не выступает?
Berkus
хм... в конструкторе можно name(name)
Меня это даже один раз покусало. Причем в крипто либе. С тех пор так больше не делаю никогда.
Berkus
Дискасс
Это же саттеровский гарбадж коллектор нэ?
Evgenii
http://lists.gnu.org/archive/html/info-gnu/2017-06/msg00002.html
Anton
Самое лучшее, что с ним произошло в этом выпуске -- появилась возможность глянуть в кишки rvalue.
vladislav
Ты уверен, что эта проблема не спцифична конкретно для тебя? Не встречал такого, если честно. Мб просто не замечал.