Wytlumaczył by mi ktos co robi 3 i 4 linijka

1
struct drzewo {
    int id, a;
    drzewo (int _id = 0, int _a = 0) : id(_id), a(_a) {}
    int operator<(const drzewo &t) const {
        return a < t.a;
    }
};

4
  1. konstruktor
  2. operator dla porównania drzewo < drzewo ( w tym przypadku sprawdza zmienną "a")
4

Definiuje operator<, pozwalając porównywać dwa obiekty klasy drzewo:

drzewo pierwsze{0, 4};
drzewo drugie{1, 2};

assert(drugie < pierwsze);

Nie jest to w pełni prawidłowy operator< — powinien być zdefiniowany jako inline bool operator<. Lektura polecana: https://en.cppreference.com/w/cpp/language/operators

Nawiasem mówiąc, C++20 dodaje jednorodne porównanie przez operator<=>: https://en.cppreference.com/w/cpp/language/default_comparisons

EDYCJA:
🤦 Liczyłem linijki od zera (więc trzecia i czwarta linijka to była dla mnie tylko definicja operator<). W trzeciej linijce jest konstruktor korzystający z listy inicjalizacyjnej. Polecana lektura: https://en.cppreference.com/w/cpp/language/constructor

1 użytkowników online, w tym zalogowanych: 0, gości: 1