MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Săritura elementelor - drop și drop_while

drop_view

Reprezentarea drop_view permite să sărim un anumit număr de elemente. Pentru a crea această reprezentare, se folosește constructorul std::ranges::drop_view, care primește un container și numărul de elemente care trebuie să fie sărite:

#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector<std::string> people { "Tom", "Kate", "Bob", "Alice", "Sam" };
    // sărim 2 elemente
    auto view = std::ranges::drop_view{people, 2};

    for(const auto& person : view)
    {
        std::cout << person << std::endl;
    }
}

În acest exemplu, sărim primele două elemente din containerul people:

auto view = std::ranges::drop_view{people, 2};

Ieșirea pe consolă va fi:

Bob
Alice
Sam

Ca alternativă, se poate folosi funcția std::views::drop(), care primește numărul de elemente care trebuie să fie sărite:

#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector<std::string> people { "Tom", "Kate", "Bob", "Alice", "Sam" };
    // sărim 2 elemente
    auto view = people | std::views::drop(2);

    for(const auto& person : view)
    {
        std::cout << person << std::endl;
    }
}

Pentru a crea reprezentarea, folosim operatorul |, care se aplică la container și funcția std::views::drop:

auto view = people | std::views::drop(2);

Săritura elementelor pe baza unui criteriu

Reprezentarea drop_while_view permite să sărim primele elemente care satisfac un anumit criteriu. Criteriul este definit printr-o funcție care primește un element din container și returnează true dacă elementul satisface condiția și false dacă nu.

Pentru a crea această reprezentare, se poate folosi constructorul std::ranges::drop_while_view, care primește un container și o funcție de condiție:

#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector<std::string> people { "Tom", "Bob", "Alice", "Sam", "Kate" };
    auto condition = [](const std::string& s) { return s.length() == 3; };

    auto view = std::ranges::drop_while_view{people, condition};

    for(const auto& person : view)
    {
        std::cout << person << std::endl;
    }
}

În acest exemplu, condiția este definită printr-o funcție care primește un șir de caractere și returnează true dacă lungimea șirului este de 3 caractere:

auto condition = [](const std::string& s) { return s.length() == 3; };

În acest caz, elementele vor fi sărite până când condiția nu mai este îndeplinită. Ieșirea pe consolă va fi:

Alice
Sam
Kate

Așadar, elementele vor fi sărite până la primul element care nu satisface condiția.

Ca alternativă, pentru a crea reprezentarea, se poate folosi funcția std::views::drop_while(), care primește funcția de condiție:

#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector<std::string> people { "Tom", "Bob", "Alice", "Sam", "Kate" };
    auto condition = [](const std::string& s) { return s.length() == 3; };

    auto view = people | std::views::drop_while(condition);

    for(const auto& person : view)
    {
        std::cout << person << std::endl;
    }
}

Astfel, pentru a crea reprezentarea, folosim operatorul |, care se aplică la container și funcția std::views::drop_while:

auto view = people | std::views::drop_while(condition);