1#ifndef NEFORCE_CORE_ALGORITHM_SET_HPP__
2#define NEFORCE_CORE_ALGORITHM_SET_HPP__
13NEFORCE_BEGIN_NAMESPACE__
46template <
typename Iterator1,
typename Iterator2,
typename Iterator3>
47constexpr Iterator3
set_union(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result) {
52 while (first1 != last1 && first2 != last2) {
53 if (*first1 < *first2) {
56 }
else if (*first2 < *first1) {
66 return _NEFORCE
copy(first2, last2, _NEFORCE
copy(first1, last1, result));
84template <
typename Iterator1,
typename Iterator2,
typename Iterator3>
85constexpr Iterator3
set_intersection(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2,
91 while (first1 != last1 && first2 != last2) {
92 if (*first1 < *first2) {
94 }
else if (*first2 < *first1) {
121template <
typename Iterator1,
typename Iterator2,
typename Iterator3>
122constexpr Iterator3
set_difference(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2,
128 while (first1 != last1 && first2 != last2) {
129 if (*first1 < *first2) {
133 }
else if (*first2 < *first1) {
140 return _NEFORCE
copy(first1, last1, result);
159template <
typename Iterator1,
typename Iterator2,
typename Iterator3>
166 while (first1 != last1 && first2 != last2) {
167 if (*first1 < *first2) {
171 }
else if (*first2 < *first1) {
180 return _NEFORCE
copy(first2, last2, _NEFORCE
copy(first1, last1, result));
187NEFORCE_END_NAMESPACE__
constexpr bool is_ranges_fwd_iter_v
检查是否为范围前向迭代器
constexpr bool is_iter_v
检查类型是否为迭代器
constexpr Iterator3 set_union(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result)
计算两个已排序范围的并集
constexpr Iterator3 set_symmetric_difference(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result)
计算两个已排序范围的对称差集
constexpr Iterator3 set_difference(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result)
计算两个已排序范围的差集
constexpr Iterator3 set_intersection(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, Iterator3 result)
计算两个已排序范围的交集
constexpr Iterator2 copy(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__copy_aux(first, last, result)))
复制范围元素