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.
Здравствуйте, dwebster, Вы писали:
D>В структуре могут быть не только строки. Например может быть int, и маской считается значение -1.
Казалось бы, сортируешь это так, что бы выделенное значение было первым, ну и вычёркиваешь всё за один проход после этого...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском