std::includes în C++

Verifică dacă toate elementele unui interval sortat se află și în alt interval sortat (submulțime).

Sintaxă
bool includes(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2);

Ce face std::includes

std::includes returnează true dacă fiecare element din al doilea interval apare și în primul. Ambele trebuie să fie sortate după același criteriu. Elementele repetate contează: dacă al doilea interval are un element de două ori, primul trebuie să-l aibă de cel puțin două ori.

Funcționează direct pe std::set, care este mereu sortat.

Parametri

Parametru Descriere
first1, last1 Mulțimea mare (sortată).
first2, last2 Submulțimea verificată (sortată).

Ce returnează

true dacă al doilea interval este inclus în primul.

Exemple

Exemplul 1: Ingredientele unei rețete

#include <algorithm>
#include <print>
#include <set>
#include <string>

int main() {
    std::set<std::string> camara{"făină", "lapte", "ouă", "sare", "zahăr"};
    std::set<std::string> clatite{"făină", "lapte", "ouă"};
    std::set<std::string> cozonac{"drojdie", "făină", "lapte", "ouă", "zahăr"};

    std::println("Pot face clătite: {}", std::includes(camara.begin(), camara.end(), clatite.begin(), clatite.end()));
    std::println("Pot face cozonac: {}", std::ranges::includes(camara, cozonac));
}

Rezultat

Pot face clătite: true
Pot face cozonac: false

Exemplul 2: Elementele repetate contează

#include <algorithm>
#include <print>
#include <vector>

int main() {
    std::vector<int> a{1, 2, 3, 5};
    std::vector<int> b{2, 2};

    std::println("{}", std::ranges::includes(a, b));
}

Rezultat

false

Greșeli frecvente

  • Apelezi funcția pe vectori nesortați și primești un răspuns greșit. Sortează-i înainte sau folosește std::set.

Comenzi înrudite

  • std::set_intersection: Calculează intersecția a două intervale sortate: elementele care apar în ambele.
  • std::set_difference: Calculează diferența a două intervale sortate: elementele din primul care nu apar în al doilea.
  • std::binary_search: Verifică foarte rapid dacă o valoare există într-un interval deja sortat.