Advertisement
Guest User

Untitled

a guest
Mar 14th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. template<typename it>
  2. it yourUnique(it begin, it end){
  3. typedef typename std::iterator_traits<it>::value_type value_t;
  4. typedef std::pair<value_t,int> pair_t;
  5.  
  6. vector<pair_t> v;
  7. for(it c = begin; c != end; ++c){
  8. v.push_back(make_pair(*c, v.size())); // second is start index;
  9. }
  10. sort(v.begin(), v.end()); // sort by value then by index
  11. v.erase(unique(v.begin(), v.end(), firstEqual<value_t>), v.end());
  12. sort(v.begin(), v.end(), bySecond<value_t>); // restore order.
  13. it c = begin;
  14.  
  15. for(const auto& x: v){
  16. *(c++) = x.first;
  17. }
  18. return c;
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement