Cosa fa rbegin e rend () in questa funzione?

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 .