4
set_union
set_union
は、次のコードと同等であると主張しています:正しいstd :: set_unionコードは何ですか?
template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_union (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
OutputIterator result)
{
while (true)
{
if (*first1<*first2) *result++ = *first1++;
else if (*first2<*first1) *result++ = *first2++;
else { *result++ = *first1++; first2++; }
if (first1==last1) return copy(first2,last2,result);
if (first2==last2) return copy(first1,last1,result);
}
}
しかし、それは奇妙に見えます:範囲のいずれかが空であればクラッシュしませんか? 2つのif
句は、while
ループの始めに終わりではなくてはなりませんか?
cplusplus.comは信頼できるリファレンスではありません。 ISO/IEC 14882は、 'set_union'のサンプルコードを含んでおらず、単に入力シーケンスを空にすることができる仕様です。 –
実際、私はcplusplus.comが一度も好きではありませんでした。詳細は正確ではありません。 – ybungalobill
@ybungalobill:私はインデックスとしてそれが好きです:) –