GeezerVison is showing cpprefjp.github.io — std::ranges::set_union - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月11日 13時06分31秒 (JST)
Akira Takahashi
が更新
履歴
編集
function template
<algorithm>
std::ranges:: set_union (C++20)
namespace std :: ranges {
template < input_iterator I1 ,
sentinel_for < I1 > S1 ,
input_iterator I2 ,
sentinel_for < I2 > S2 ,
weakly_incrementable O ,
class Comp = ranges::less ,
class Proj1 = identity ,
class Proj2 = identity >
requires mergeable < I1 , I2 , O , Comp , Proj1 , Proj2 >
constexpr set_union_result < I1 , I2 , O >
set_union ( I1 first1 ,
S1 last1 ,
I2 first2 ,
S2 last2 ,
O result ,
Comp comp = {},
Proj1 proj1 = {},
Proj2 proj2 = {}); // (1) C++20
template < input_range R1 ,
input_range R2 ,
weakly_incrementable O ,
class Comp = ranges::less ,
class Proj1 = identity ,
class Proj2 = identity >
requires mergeable <
iterator_t < R1 > ,
iterator_t < R2 > ,
O ,
Comp ,
Proj1 ,
Proj2 >
constexpr set_union_result < borrowed_iterator_t < R1 > , borrowed_iterator_t < R2 > , O >
set_union ( R1 && r1 ,
R2 && r2 ,
O result ,
Comp comp = {},
Proj1 proj1 = {},
Proj2 proj2 = {}); // (2) C++20
template < execution-policy Ep ,
random_access_iterator I1 ,
sized_sentinel_for < I1 > S1 ,
random_access_iterator I2 ,
sized_sentinel_for < I2 > S2 ,
random_access_iterator O ,
sized_sentinel_for < O > OutS ,
class Comp = ranges::less ,
class Proj1 = identity ,
class Proj2 = identity >
requires mergeable < I1 , I2 , O , Comp , Proj1 , Proj2 >
set_union_result < I1 , I2 , O >
set_union ( Ep && exec ,
I1 first1 ,
S1 last1 ,
I2 first2 ,
S2 last2 ,
O result ,
OutS result_last ,
Comp comp = {},
Proj1 proj1 = {},
Proj2 proj2 = {}); // (3) C++26
template < execution-policy Ep ,
sized-random-access-range R1 ,
sized-random-access-range R2 ,
sized-random-access-range OutR ,
class Comp = ranges::less ,
class Proj1 = identity ,
class Proj2 = identity >
requires mergeable <
iterator_t < R1 > ,
iterator_t < R2 > ,
iterator_t < OutR > ,
Comp ,
Proj1 ,
Proj2 >
set_union_result < borrowed_iterator_t < R1 > , borrowed_iterator_t < R2 > , borrowed_iterator_t < OutR >>
set_union ( Ep && exec ,
R1 && r1 ,
R2 && r2 ,
OutR && result_r ,
Comp comp = {},
Proj1 proj1 = {},
Proj2 proj2 = {}); // (4) C++26
}
概要
2つのソート済み範囲の和集合を得る
(1): イテレータ範囲を指定する
(2): Rangeを直接指定する
(3): (1)の並列アルゴリズム版。実行ポリシーを指定する
(4): (2)の並列アルゴリズム版。実行ポリシーを指定する
事前条件
結果の範囲は両方の入力の範囲と重なっていてはならない。
効果
2つの範囲からソート済みの union を構築する。つまり、片方または両方の範囲にある要素の集合を構築する。
戻り値
ただし、result_last は構築された範囲の終端。
計算量
最大で 2 * ((last1 - first1) + (last2 - first2)) - 1 回の比較を行う
例
基本的な使い方
出力
1
2
3
4
5
6
並列アルゴリズムの例 (C++26)
出力
1 2 3 4 5 6
バージョン
言語
処理系
参照