Схлопывание вектора структур по маскам
От: dwebster Россия  
Дата: 14.02.19 09:31
Оценка:
Допустим имеется вектор структур

struct { string s1, s2, s3; };

s1, s2, s3 — некие непустые строки, но если строка = "*" значит это маска, и все записи в векторе, которые подпадают под эту маску должны быть удалены.
Т.е. если на входе

1. "aaa", "bbb", "ccc"
2. "aaa", "bbb", "vvv" // должно быть удалено
3. "aaa", "bbb", "ccc"
4. "aaa", "*", "vvv" // маска
5. "aaa", "www", "ccc"
6. "aaa", "dfg", "vvv" // должно быть удалено

#2 и #6 должны быть удалены из результирующего вектора, т.к. маска #4 их покрывает.
Маской может являться любая из строк или комбинаций строк, т.е. если имеется элемент "*", "*", "*", он покрывает все остальные, и в результирующем векторе должен остаться он один.
Сделать это тривиально сложности не представляет. Но вероятно существуют красивые и максимально эффективные алгоритмы для подобных задач. О них бы и хотелось узнать.
В структуре могут быть не только строки. Например может быть int, и маской считается значение -1.
Отредактировано 14.02.2019 9:43 dwebster . Предыдущая версия . Еще …
Отредактировано 14.02.2019 9:40 dwebster . Предыдущая версия .
Отредактировано 14.02.2019 9:39 dwebster . Предыдущая версия .
Отредактировано 14.02.2019 9:39 dwebster . Предыдущая версия .
Отредактировано 14.02.2019 9:39 dwebster . Предыдущая версия .
Отредактировано 14.02.2019 9:36 dwebster . Предыдущая версия .
Re: Схлопывание вектора структур по маскам
От: Erop Россия  
Дата: 18.02.19 00:04
Оценка:
Здравствуйте, dwebster, Вы писали:

D>В структуре могут быть не только строки. Например может быть int, и маской считается значение -1.


Казалось бы, сортируешь это так, что бы выделенное значение было первым, ну и вычёркиваешь всё за один проход после этого...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Схлопывание вектора структур по маскам
От: murbanga  
Дата: 27.02.19 16:54
Оценка:
Здравствуйте, dwebster, Вы писали:

D>Допустим имеется вектор структур


D>struct { string s1, s2, s3; };


Написать оператор сравнения для этих структур и сунуть их все в std::set ? (ну или в какой другой сортированный контейнер)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.