Można to wykorzystać
max_element(v.rbegin(), v.rend());
odnieść się do największego indeksu największej wartości.
Przykładowo
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5, 3, 3, 2, 5};
*max_element(v.rbegin(), v.rend())=-1;
for (auto i: v) cout << i << ' ';
}
tworzy wyjście
1 2 3 4 5 3 3 2 -1
metodzie opisanej powyżej iteracyjnej powraca do tyłu, jak wskazano przez @BoBTFish. Aby dostać się do przodu iterator, można to zrobić:
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
int main()
{
vector <int> v = {1, 2, 3, 4, 5, 3, 3, 2, 5};
reverse_iterator < vector <int> :: iterator > x (max_element(v.rbegin(), v.rend()));
vector <int> :: iterator it=--x.base(); // x.base() points to the element next to that pointed by x.
*it=-1;
*--it=0; // marked to verify
for (auto i: v) cout << i << ' ';
}
tworzy wyjście
1 2 3 4 5 3 3 0 -1
^
Można zauważyć, że iterator it
jest iterator do przodu.
'max_element' z' reverse_iterator's? (Czy piszesz pseudo-kod lub używasz już biblioteki zasięgu Erica Nieblera? Nie ma obecnie standardowego 'std :: max_element' używającego tylko' std :: vector'.) – BoBTFish
Możesz wyszukiwać od pierwszego rezultatu . –
@BoBTFish thanks! Zajrzę w to. – PanicSkittle