Sobes.tech
Back to questions
Junior — Middle
89

Какой тип данных или объекты допустимо сохранять внутри контейнера std::set в C++?

Companies where asked
Renga Software

Answer from AI

sobes.tech AI

В контейнер std::set в C++ можно сохранять любые типы данных, для которых определён оператор сравнения меньше (<), так как std::set хранит элементы в отсортированном порядке и использует этот оператор для упорядочивания.

Это могут быть:

  • Примитивные типы (int, double, char и т.д.)
  • Пользовательские классы и структуры, если для них определён оператор < или предоставлен компаратор при создании set

Пример с пользовательским типом:

#include <set>
#include <string>

struct Person {
    std::string name;
    int age;

    bool operator<(const Person& other) const {
        return age < other.age; // сортировка по возрасту
    }
};

int main() {
    std::set<Person> people;
    people.insert({"Alice", 30});
    people.insert({"Bob", 25});
}

Если оператор < не определён, компиляция завершится ошибкой.