The Wayback Machine - https://web.archive.org/web/20180303160605/http://ja.cppreference.com:80/w/cpp/algorithm/set_union
名前空間
変種
操作

std::set_union

提供: cppreference.com
< cpp‎ | algorithm

 
 
アルゴリズムライブラリ
実行ポリシー (C++17)
非変更シーケンス操作
all_of
any_of
none_of
(C++11)
(C++11)
(C++11)
for_each
for_each_n(C++17)
変更シーケンス操作
未初期化記憶域の操作
分割操作
ソート操作
バイナリサーチ操作
集合操作 (ソート済み範囲に対する)
ヒープ操作
is_heap(C++11)
is_heap_until(C++11)
最小/最大演算
minmax(C++11)
minmax_element(C++11)
clamp(C++17)
compare_3way(C++20)
順列
数値演算
C のライブラリ
 
ヘッダ <algorithm> で定義
template<class InputIt1, class InputIt2, class OutputIt >

OutputIt set_union( InputIt1 first1, InputIt1 last1,
                    InputIt2 first2, InputIt2 last2,

                    OutputIt d_first );
(1)
template<class InputIt1, class InputIt2,

          class OutputIt, class Compare >
OutputIt set_union( InputIt1 first1, InputIt1 last1,
                    InputIt2 first2, InputIt2 last2,

                    OutputIt d_first, Compare comp );
(2)
1に存在するすべての要素または両方ソート範囲から成るd_firstでソートされた範囲の先頭を構築[first1, last1)[first2, last2)。最初のバージョンでは、両方の入力がoperator<でソートされている範囲では、2番目のバージョンは、それらが与えられた比較関数compでソートされることを想定して期待しています。いくつかの要素が見つかった場合m[first1, last1)n[first2, last2)回繰り返した後、すべてのm要素は順序を保持し、[first1, last1)からd_firstにコピーされ、その後正確にstd::max(n-m, 0)要素も、順序を保持し、[first2, last2)からd_firstにコピーされます。結果の範囲は入力レンジのいずれかと重複することはできません.
Original:
Constructs a sorted range beginning at d_first consisting of all elements present in one or both sorted ranges [first1, last1) and [first2, last2). The first version expects both input ranges to be sorted with operator<, the second version expects them to be sorted with the given comparison function comp. If some element is found m times in [first1, last1) and n times in [first2, last2), then all m elements will be copied from [first1, last1) to d_first, preserving order, and then exactly std::max(n-m, 0) elements will be copied from [first2, last2) to d_first, also preserving order. The resulting range cannot overlap with either of the input ranges.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

目次

[編集]パラメータ

first1, last1 -
最初の入力は範囲をソートします
Original:
the first input sorted range
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
first2, last2 -
第二の入力は範囲をソートします
Original:
the second input sorted range
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - 比較関数. 最初の値が二つ目の値より小さい 場合、 ​trueを返します.

比較関数のシグネチャは以下と同等でなければなりません.

 bool cmp(const Type1 &a, const Type2 &b);

シグネチャはconstを含まなくても構いませんが, 比較関数は渡されたオブジェクトを変更してはなりません.
The types Type1 and Type2 must be such that objects of types InputIt1 and InputIt2 can be dereferenced and then implicitly converted to Type1 and Type2 respectively. ​

型の要件
-
InputIt1InputIterator

の要求を満足しなければなりません。

-
InputIt2InputIterator

の要求を満足しなければなりません。

-
OutputItOutputIterator

の要求を満足しなければなりません。

[編集]値を返します

構築範囲の終わり過去イテレータ.
Original:
Iterator past the end of the constructed range.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]複雑性

最も2·(N1+N2-1)の比較で、どこN1=std::distance(first1, last1)N2=std::distance(first2, last2).
Original:
At most 2·(N1+N2-1) comparisons, where N1=std::distance(first1, last1) and N2=std::distance(first2, last2).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[編集]可能な実装

First version
template<class InputIt1, class InputIt2, class OutputIt> OutputIt set_union(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first){for(; first1 != last1;++d_first){if(first2 == last2)returnstd::copy(first1, last1, d_first);if(*first2 <*first1){*d_first =*first2++;}else{*d_first =*first1;if(!(*first1 <*first2))++first2;++first1;}}returnstd::copy(first2, last2, d_first);}
Second version
template<class InputIt1, class InputIt2, class OutputIt, class Compare> OutputIt set_union(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first, Compare comp){for(; first1 != last1;++d_first){if(first2 == last2)returnstd::copy(first1, last1, d_first);if(comp(*first2, *first1)){*d_first =*first2++;}else{*d_first =*first1;if(!comp(*first1, *first2))++first2;++first1;}}returnstd::copy(first2, last2, d_first);}

[編集]

[編集]参照

1セットが他のサブセットである場合はtrueを返します
Original:
returns true if one set is a subset of another
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数テンプレート)[edit]
2つの集合の差分を計算します
(関数テンプレート)[edit]
2つの集合の積を計算します
(関数テンプレート)[edit]
2セット間の対称差を計算します
Original:
computes the symmetric difference between two sets
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(関数テンプレート)[edit]
close