Junior — Middle
Under what conditions can an object of a class be used as an element of a set?.
sobes.tech AI
Answer from AI
An object of a class can be used as an element of a set in C++ under the following conditions:
-
The comparison operator (operator<) is defined — by default, std::set uses the less-than operator to order elements. If the class does not have an operator<, you need to define it or provide a comparator.
-
Objects must be copyable or movable — std::set stores copies of elements, so the class must support copying or moving.
If these conditions are met, class objects can be added to std::set, and the set will correctly maintain the uniqueness and order of elements.
Example:
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});
If you do not define operator<, you can pass a comparator to the std::set template.