Sobes.tech
Junior — Middle
113

Dans quelles conditions un objet de classe peut-il être utilisé comme élément d'un ensemble set?

Entreprises à qui on a demandé
LestaGames

Réponse de l'IA

sobes.tech IA

Объект класса может быть использован в качестве элемента множества (set) в C++ при выполнении следующих условий:

  1. Определён оператор сравнения (operator<) — для std::set по умолчанию используется оператор меньше для упорядочивания элементов. Если класс не имеет оператора <, нужно либо его определить, либо передать компаратор.

  2. Объекты должны быть копируемыми или перемещаемыми — std::set хранит копии элементов, поэтому класс должен поддерживать копирование или перемещение.

Если эти условия выполнены, объекты класса можно добавлять в std::set, и множество будет корректно поддерживать уникальность и упорядоченность элементов.

Пример:

struct MyClass {
    int id;
    bool operator<(const MyClass& other) const {
        return id < other.id;
    }
};

std::set<MyClass> mySet;
mySet.insert(MyClass{1});
mySet.insert(MyClass{2});

Если не определить operator<, можно передать компаратор в шаблон std::set.