/// <summary> /// Алгоритм, возвращающий множество, полученное операцией объединения его с указанным /// </summary> /// <param name="other"></param> /// <returns></returns> public MySetClass <T> SymmetricDifference(MySetClass <T> other) { // Проверяем входные данные if (other == null) { throw new ArgumentNullException(nameof(other)); } var union = Union(other); var intersection = Intersection(other); return(union.Difference(intersection)); }
/// <summary> /// Алгоритм, возвращающий множество, являющееся разностью текущего с указанным /// </summary> /// <param name="other"></param> /// <returns></returns> public MySetClass <T> Difference(MySetClass <T> other) { // Проверяем входные данные if (other == null) { throw new ArgumentNullException(nameof(other)); } var result = new MySetClass <T>(_items); foreach (var item in other._items) { result.Remove(item); } return(result); }
/// <summary> /// Алгоритм, возвращающий множество, полученное операцией пересечения его с указанным /// </summary> /// <param name="other"></param> /// <returns></returns> public MySetClass <T> Intersection(MySetClass <T> other) { // Проверяем входные данные if (other == null) { throw new ArgumentNullException(nameof(other)); } var result = new MySetClass <T>(); foreach (var item in other._items) { if (Contains(item)) { result.Add(item); } } return(result); }