STL(に限らず多くのコード)の実装の中には「一見自由度があるように見えて実はそれしかない」って感じの部分があって,その真意を理解するとついついうれしくなるんですけれどこういうのって私だけじゃないですよね?何か「奥が深い症候群」とか「バッドノウハウ」って言葉が頭をよぎりますが気のせいに違いない・・・.
template<class InputIterator1, class InputIterator2, class OutputIterator> OutputIterator merge(InputIterator1 first1, InputIterator last1, InputIterator2 first2, InputIterator last2, OutputIterator dest) { while(first1 != last1 && first2 != last2){ if(*first2 < *first1) // 何故に"*first2 < *first1"? *dest++ = *first2++; else *dest++ = *first1++; } dest = copy(first1, last1, dest); return copy(first2, last2, dest); }