copy requires input iterator as the first two parameters and output iterator as the third parameter. reverse requires bidirectional iterator. unique requires forward iterator.