Ce face std::reverse
std::reverse schimbă între ele primul și ultimul element, al doilea și penultimul și așa mai departe, până la mijloc. Merge pe orice container cu iteratori bidirecționali, inclusiv std::string și std::list.
Dacă vrei doar să parcurgi invers fără să modifici datele, folosește rbegin()/rend() sau std::views::reverse.
Parametri
| Parametru | Descriere |
|---|---|
first, last |
Intervalul inversat. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Inversarea unui text și verificare palindrom
#include <algorithm>
#include <print>
#include <string>
int main() {
for (std::string cuvant : {"capac", "mere"}) {
std::string invers = cuvant;
std::reverse(invers.begin(), invers.end());
std::println("{} -> {}, palindrom: {}", cuvant, invers, cuvant == invers);
}
}
Rezultat
capac -> capac, palindrom: true
mere -> erem, palindrom: false
Exemplul 2: Doar o parte din vector
#include <algorithm>
#include <print>
#include <vector>
int main() {
std::vector<int> v{1, 2, 3, 4, 5, 6};
std::reverse(v.begin() + 2, v.end());
std::println("{}", v);
std::ranges::reverse(v);
std::println("{}", v);
}
Rezultat
[1, 2, 6, 5, 4, 3]
[3, 4, 5, 6, 2, 1]
Greșeli frecvente
- Inversezi un
std::stringcu diacritice și obții caractere stricate. Literele ca „ș” ocupă 2 octeți în UTF-8, iarreversele inversează și octeții.
Comenzi înrudite
std::views::reverse: Creează o vedere care parcurge un range de la ultimul element la primul, fără să-l modifice.std::rotate: Rotește elementele astfel încât middle devine primul element, iar cele dinaintea lui trec la final.std::swap_ranges: Schimbă între ele elementele a două intervale de aceeași lungime, poziție cu poziție.