main() によって渡された配列を並べ替え、重複を削除し、一意の要素の数を返す次の関数に出くわしました。頭を包むのに苦労している最後のビットです。
int reduce(long ar[], int n) {
sort(ar, ar + n);
return unique(ar, ar + n) - ar; // ???
}
私の理解では、unique() は、配列に一意の値を格納するセグメントの末尾へのポインターを返します。しかし、反復子から配列名を減算すると、一意の要素の数に等しい int が得られる理由、またはunique(ar, ar+n)
同じ結果を得るために int に型キャストできない理由がわかりません。