Ce face std::views::drop
std::views::drop(n) începe parcurgerea de la al n + 1-lea element. Dacă range-ul are cel mult n elemente, rezultatul este gol.
Împreună cu take poți lua o „pagină” din date: drop(20) | take(10) înseamnă elementele 21-30.
Parametri
| Parametru | Descriere |
|---|---|
range |
Sursa. |
n |
Câte elemente se sar. |
Ce returnează
Un view fără primele n elemente.
Exemple
Exemplul 1: Fără antetul unui fișier CSV
#include <print>
#include <ranges>
#include <string>
#include <vector>
int main() {
std::vector<std::string> linii{"nume,oras", "Ana,Iași", "Dan,Cluj", "Ioana,Brașov"};
for (const auto& linie : linii | std::views::drop(1)) {
std::println("{}", linie);
}
}
Rezultat
Ana,Iași
Dan,Cluj
Ioana,Brașov
Exemplul 2: Paginare: pagina 2, câte 3 pe pagină
#include <print>
#include <ranges>
int main() {
int pe_pagina = 3;
int pagina = 2;
auto produse = std::views::iota(1, 11);
auto pagina_curenta = produse | std::views::drop((pagina - 1) * pe_pagina) | std::views::take(pe_pagina);
std::println("Pagina {}: {}", pagina, pagina_curenta);
}
Rezultat
Pagina 2: [4, 5, 6]
Greșeli frecvente
- Dai un
nnegativ: este comportament nedefinit.
Comenzi înrudite
std::views::take: Creează o vedere cu primele n elemente ale unui range (sau toate, dacă sunt mai puține).std::views::take_while: Creează o vedere cu elementele de la început, cât timp îndeplinesc o condiție; se oprește la primul care nu o îndeplinește.std::views::iota: Generează numerele consecutive dintr-un interval (sau la infinit) fără să le stocheze.