È possibile utilizzare questo
max_element(v.rbegin(), v.rend());
per fare riferimento al più grande indice del più grande valore.
Ad esempio,
#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 << ' ';
}
produce uscita
1 2 3 4 5 3 3 2 -1
Il metodo di cui sopra restituisce un iteratore inverso, come sottolinea @BoBTFish. Per ottenere un iteratore in avanti, si potrebbe fare questo:
#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 << ' ';
}
produce un output
1 2 3 4 5 3 3 0 -1
^
Si può notare che l'iteratore it
è un iteratore in avanti.
'max_element' con' reverse_iterator's? (Stai scrivendo pseudo-codice o stai già utilizzando la libreria di gamma di Eric Niebler? Non esiste attualmente lo standard 'std :: max_element' che prende solo un' std :: vector'.) – BoBTFish
Puoi cercare dal primo risultato ottenuto . –
@BoBTFish grazie! Vedrò questo. – PanicSkittle