В приведенном ниже коде я объявил вектор как {1,2,3,4,5}
.
Используя STL std::find()
, я пытаюсь найти 5
в векторе в диапазоне от arr.begin()
до arr.end()-1
или От arr.begin()
до arr.begin()+4
, что является одним и тем же диапазоном от 1
до 4
.
Но здесь для обоих итераторы возвращаются, указывая на 5
. Почему это так, ведь диапазон только от 1
до 4
?
#include <iostream>
#include <vector>
#include <array>
#include <algorithm>
using namespace std;
int main () {
vector<int> arr {1,2,3,4,5};
// TEST
for_each(arr.begin(), arr.begin()+4, [](const int &x) { cerr << x << " "; }); cerr << endl;
for_each(arr.begin(), arr.end()-1, [](const int &x) { cerr << x << " "; }); cerr << endl;
auto it1 {std::find(arr.begin(), arr.begin()+4, 5)};
auto it2 {std::find(arr.begin(), arr.end()-1, 5)};
if (it1 != arr.end())
cout << *it1 << " Found!" << endl;
else
cout << "NOT Found!" << endl;
if (it2 != arr.end())
cout << *it2 << " Found!" << endl;
else
cout << "NOT Found!" << endl;
return 0;
}
ВЫХОД:
1 2 3 4
1 2 3 4
5 Found!
5 Found!