I have tried to use the max function but it needs a iterator and that are A.begin and A.end but for my program I want to find for a range say from i to x .I tried to read the docs but was unable to find the solution. Any help would be appreciated.Thank you.
Asked
Active
Viewed 5,249 times
3
-
5vector provides random access iterators so you can easily convert index to iterator `items.begin() + i` – user7860670 Jul 20 '17 at 09:20
-
It would be better if you could provide some real code – fitzbutz Jul 20 '17 at 09:20
-
1That's the good thing about all the [standard algorithm functions](http://en.cppreference.com/w/cpp/algorithm), they take a *range*. Iterators doesn't have to be just the beginning and end, it can be anything in between. – Some programmer dude Jul 20 '17 at 09:21
-
Possible duplicate of [Can I increment an iterator by just adding a number?](https://stackoverflow.com/questions/1033089/can-i-increment-an-iterator-by-just-adding-a-number) – Andre Kampling Jul 20 '17 at 09:22
1 Answers
9
You're not looking for max. But for std::max_element
.
To use it:
std::vector<int> v;
// fill it
auto max_it = std::max_element(v.begin()+i, v.end());
And to check in the range [i,j):
auto max_it = std::max_element(v.begin()+i, v.begin()+j);
max_it
here is an iterator, to get the number from it:
int max_number = *max_it;

The Quantum Physicist
- 24,987
- 19
- 103
- 189