Данные · Контейнеры и алгоритмы

Структуры

Собираем связанные данные в один тип

~25 мин 7 шагов

После урока ты сможешь

  • Описывать свои типы через struct
  • Инициализировать структуры с назначенными полями
  • Хранить структуры в vector и обрабатывать их функциями

Шаг 1 из 7

Связанные данные — вместе

Допустим, программа хранит товары: название, цену и количество. Можно завести три вектора:

std::vector<std::string> names;
std::vector<double> prices;
std::vector<int> quantities;

Но эти данные связаны только тем, что лежат под одинаковыми индексами. Отсортируй один вектор и забудь другой — и цены «уедут» к чужим товарам. Добавишь поле — придётся менять код в десяти местах.

Правильно — описать свой тип, который собирает связанные данные в одно целое:

main.cpp
#include <print>
#include <string>
​
struct Product {
    std::string name;
    double price = 0.0;
    int quantity = 0;
};
​
int main() {
    Product phone{"Смартфон", 24990.0, 3};
    phone.quantity -= 1;   // продали один
​
    std::println("{}: {} шт. по {}", phone.name, phone.quantity, phone.price);
    std::println("На складе на сумму {:.2f}", phone.price * phone.quantity);
}

struct описывает тип: какие поля есть у каждого товара. Поля называют членами структуры, а доступ к ним идёт через точку: phone.price. После описания Product можно использовать так же, как int или std::string.