fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <iterator>
  4. #include <vector>
  5. #include <list>
  6.  
  7. template <class InputIterator1, class InputIterator2>
  8. bool myequal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
  9. {
  10. typename std::iterator_traits<InputIterator1>::difference_type len1 = std::distance(first1, last1);
  11. typename std::iterator_traits<InputIterator2>::difference_type len2 = std::distance(first2, last2);
  12.  
  13. if (len1 != len2)
  14. return false;
  15.  
  16. return std::equal(first1, last1, first2);
  17. }
  18.  
  19. int main()
  20. {
  21. int a[] = {1, 10, 3, 5, 6, 5, 2, 9};
  22. int b[] = {1, 10, 3, 5, 6, 5, 2};
  23.  
  24. size_t size_a = sizeof(a) / sizeof(a[0]);
  25. size_t size_b = sizeof(b) / sizeof(b[0]);
  26.  
  27. bool eqb = myequal(a, a +size_a, b, b + size_b);
  28. std::cout << "a[]とb[]は" << ((eqb) ? "等しい" : "等しくない") << std::endl;
  29.  
  30. eqb = myequal(b, b + size_b, a, a + size_a);
  31. std::cout << "a[]とb[]は" << ((eqb) ? "等しい" : "等しくない") << std::endl;
  32.  
  33. std::vector<int> vi(a, a + size_a);
  34. std::list<int> li(b, b + size_b);
  35.  
  36. eqb = myequal(vi.begin(), vi.end(), li.begin(), li.end());
  37. std::cout << "viとliは" << ((eqb) ? "等しい" : "等しくない") << std::endl;
  38.  
  39. li.push_back(9);
  40.  
  41. eqb = myequal(vi.begin(), vi.end(), li.begin(), li.end());
  42. std::cout << "viとliは" << ((eqb) ? "等しい" : "等しくない") << std::endl;
  43. }
  44.  
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
a[]とb[]は等しくない
a[]とb[]は等しくない
viとliは等しくない
viとliは等しい