fork download
  1. #include <vector>
  2. #include <algorithm>
  3. #include <iterator>
  4.  
  5. int main()
  6. {
  7. // Begin and end iterators in STL:
  8. {
  9. std::vector<int> v1(4,5);
  10. auto i = std::find(v1.begin(), v1.end(), 3); // i is vector::iterator
  11.  
  12. const std::vector<int> v2(4,5);
  13. auto j = std::find(v2.begin(), v2.end(), 3); // j is vector::const_iterator
  14.  
  15. std::vector<int> v3(4,5);
  16. auto k = std::find(v3.cbegin(), v3.cend(), 3); // k is vector::const_iterator (since C++11)
  17. }
  18.  
  19. // Issue in C++98:
  20. {
  21. std::vector<int> v(3,5);
  22. std::vector<int>::const_iterator ci = std::find( v.begin(), v.end(), 3); // implicit casting
  23. v.insert(ci, 2); // syntax error in C++98, not in C++11 (since g++ 4.9.2)
  24. }
  25.  
  26. // C++11: use global begin() and end() for greater generality
  27. {
  28. std::vector<int> v1(4,5);
  29. auto i = std::find(begin(v1), end(v1), 3); // i is vector::iterator
  30.  
  31. const std::vector<int> v2(4,5);
  32. auto j = std::find(begin(v2), end(v2), 3); // j is vector::const_iterator
  33.  
  34. std::vector<int> v3(4,5);
  35. auto k = std::find(cbegin(v3), cend(v3), 3); // not in C++11, only since C++14
  36.  
  37. int t[4] = { 1, 2, 3, 4 };
  38. auto l = std::find(std::begin(t), std::end(t), 3); // l is int*
  39. }
  40. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
Standard output is empty