Функция set_difference
Функция set_difference находит разность двух
отсортированных диапазонов и записывает элементы,
которые присутствуют в первом диапазоне, но
отсутствуют во втором, в контейнер, начиная с
указанной позиции. Первым и вторым параметрами
функция принимает итераторы начала и конца первого
диапазона, третьим и четвёртым - итераторы начала
и конца второго диапазона, а пятым - итератор
начала контейнера, куда будет записан результат.
Оба исходных диапазона должны быть отсортированы.
Синтаксис
set_difference(first1, last1, first2, last2, res)
Пример
Давайте найдём разность двух множеств, заданных
векторами {1, 2, 3, 4, 5} и {2, 4}, и
выведем результат на экран:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2 = {2, 4};
vector<int> res(5);
auto it = set_difference(
v1.begin(), v1.end(),
v2.begin(), v2.end(),
res.begin()
);
res.resize(it - res.begin());
for (int n : res) {
cout << n << " ";
}
return 0;
}
Результат выполнения кода:
1 3 5
Пример
Давайте найдём разность двух множеств, заданных
векторами {"a", "b", "c", "d", "e"} и
{"b", "d"}, и выведем результат на экран:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> v1 = {"a", "b", "c", "d", "e"};
vector<string> v2 = {"b", "d"};
vector<string> res(5);
auto it = set_difference(
v1.begin(), v1.end(),
v2.begin(), v2.end(),
res.begin()
);
res.resize(it - res.begin());
for (const string& s : res) {
cout << s << " ";
}
return 0;
}
Результат выполнения кода:
"a" "c" "e"
Смотрите также
-
функция
set_union,
которая находит объединение двух множеств -
функция
set_intersection,
которая находит пересечение двух множеств -
функция
includes,
которая проверяет вхождение одного диапазона в другой -
функция
merge,
которая объединяет два отсортированных диапазона