Ce face std::views::reverse
std::views::reverse nu are paranteze: se scrie direct v | std::views::reverse. Parcurge elementele în ordine inversă, iar containerul original rămâne neschimbat (spre deosebire de std::reverse).
Merge pe range-uri care se pot parcurge în ambele sensuri: vector, string, list, map, dar nu și pe std::forward_list.
Parametri
| Parametru | Descriere |
|---|---|
range |
Sursa (bidirecțională). |
Ce returnează
Un view inversat.
Exemple
Exemplul 1: Numărătoare inversă
#include <print>
#include <ranges>
int main() {
for (int i : std::views::iota(1, 6) | std::views::reverse) {
std::print("{}... ", i);
}
std::println("Start!");
}
Rezultat
5... 4... 3... 2... 1... Start!
Exemplul 2: Ultimele mesaje primele
#include <print>
#include <ranges>
#include <string>
#include <vector>
int main() {
std::vector<std::string> mesaje{"Bună dimineața", "Ai primit factura?", "Da, mulțumesc", "Pe mâine"};
for (const auto& m : mesaje | std::views::reverse | std::views::take(2)) {
std::println("{}", m);
}
std::println("Primul din vector a rămas: {}", mesaje.front());
}
Rezultat
Pe mâine
Da, mulțumesc
Primul din vector a rămas: Bună dimineața
Greșeli frecvente
- Scrii
std::views::reverse()cu paranteze: nu compilează. Este un adaptor fără argumente.
Comenzi înrudite
std::reverse: Inversează pe loc ordinea elementelor dintr-un interval.std::views::take: Creează o vedere cu primele n elemente ale unui range (sau toate, dacă sunt mai puține).std::views::iota: Generează numerele consecutive dintr-un interval (sau la infinit) fără să le stocheze.