std :: set_unionとその親族は、操作対象のセットに対して2組のイテレータを使用します。それが最も柔軟なことであるという点でそれは素晴らしいことです。ただし、通常の使用の80%でよりエレガントな、追加の便利な機能を簡単に作成できたはずです。
例えば:
template<typename ContainerType, typename OutputIterator>
OutputIterator set_union( const ContainerType & container1,
const ContainerType & container2,
OutputIterator & result )
{
return std::set_union( container1.begin(), container1.end(),
container2.begin(), container2.end(),
result );
}
向きを変えるだろう:
std::set_union( mathStudents.begin(), mathStudents.end(),
physicsStudents.begin(), physicsStudents.end(),
students.begin() );
の中へ:
std::set_union( mathStudents, physicsStudents, students.begin() );
それで:
私が見つけていない場所に隠れているこのような便利な機能はありますか?
そうでない場合、STLから除外される理由を誰かが知ることができますか?
ブーストには、おそらくもっとフル機能のセットライブラリがありますか?(見つかりません)
もちろん、いつでもどこかのユーティリティライブラリに実装を配置できますが、すべてのプロジェクトで使用されるように整理するのは困難ですが、不適切に統合されることはありません。