fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <iterator>
  4. #include <set>
  5. using namespace std;
  6.  
  7. template< class InputIterator1, class InputIterator2 >
  8. bool isAnagram( InputIterator1 beg1, InputIterator2 end1,
  9. InputIterator2 beg2, InputIterator2 end2)
  10. {
  11. if( distance( beg1, end1 ) != distance( beg2, end2 ) )
  12. {
  13. return false;
  14. }
  15.  
  16. typedef typename iterator_traits<InputIterator1>::value_type _T1;
  17. multiset< _T1 > sorted1( beg1, end1 );
  18.  
  19. typedef typename iterator_traits<InputIterator2>::value_type _T2;
  20. multiset< _T2 > sorted2( beg2, end2 );
  21.  
  22. return sorted1 == sorted2;
  23. }
  24.  
  25. int main()
  26. {
  27. const char* s1 = "nana";
  28. const char* s2 = "anna";
  29.  
  30. cout << isAnagram( s1, s1+4, s2, s2+4 ) << endl;
  31. }
  32.  
Success #stdin #stdout 0s 2860KB
stdin
Standard input is empty
stdout
1