Cosa fa esattamente rbegin () e rend () nella seguente funzione per determinare se l’input è un palindromo o no?
bool palindromeCheck(string input) { if (input == string(input.rbegin(), input.rend())) { return true; } else { return false; } }
Uno dei costruttori per std::string
accetta come input una coppia di iteratori. rbegin()
restituisce un iteratore inverso all’ultimo carattere della stringa di input
originale e rend()
restituisce un iteratore inverso al carattere che precede il primo carattere della stringa di input
originale (cioè una passata alla “fine” della stringa).
Il risultato è che viene costruita una nuova stringa che è la versione invertita dell’originale, e se quella nuova stringa è uguale all’originale allora è un palindromo e la funzione restituisce true.
rbegin
restituisce un iteratore alla fine della stringa, input
. In altre parole è un iteratore inverso. rend
ritorna un iteratore che punta prima del primo carattere nella stringa.
Vedi: qui e qui .