Схлопывание вектора структур по маскам
От: 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 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.