fwrite
реализована на языке C и является частью file i/o API. std::basic_string
является частью Strings Library, а std::vector
- частью Container Library в Standard Template Library, реализованной на языке C++.fwrite(&name, sizeof(name), 1, f);
nazv
или a
не хранится, там хранятся только указатели на выделенную память + довольно много сервисных полей. Даже учитывая SSO нельзя говорить что данные самой строки размещаются внутри объекта std::string
, т.к. в общем смысле это не так.fwrite(&name.nazv, sizeof(string), 1,f);
fwrite(&name.semestr, sizeof(int), 1,f);
fwrite(&name.a, sizeof(name.a), 1,f);
fwrite
, откуда ей на самом деле стоит брать память для формирования нужного тебе формата файла. Эта функция ничего не знает о строках и типах, о размещении в памяти и структуре того или иного объекта. Она принимает просто кусок памяти и пишет его в файл по текущей позиции в файле. Все.std::string
и std::vector
в интерфейсе есть функция data
(для строки, для вектора) для получения указателя на подконтрольную память. В случае строки ты эту память можешь писать сразу в файл. В случае вектора от int
- тоже, т.к. с фундаментальными типами все довольно просто. std::string
и std::vector<int>
. Расскажи про эти типы, как они работают, какая у них методология управления памятью. Частью какой библиотеки являются эти типы? К какой подсистеме этой библиотеки данные типы относятся?fwrite
?fwrite
, и на каком именно языке реализованы шаблоны std::basic_string
и std::vector
? std::minmax
разве предназначен чтобы работать на диапазоне итераторов?Как бы такое побороть, например пометить файл чтобы всегда пересобирался.
Скриншот - это по большей части второстепенное.
extern string
и почему эту задачу нельзя было решить иным образом?char
, что то один символ строки. На самом деле тип char
представляет собой участок памяти размером в 1 байт. По некоторому велению судьбы в этот 1 байт можно вписать код любого символа из ASCII. Надеюсь, для тебя это понятно.N
символов потребуется уже N
байт.
Что значит "СД Стек"? Что значит "брать классы как структуры"? Зачем "необходимо разбить мою задачу на 5 или более структур", почему 5, почему структур, каких структур?
Какие задачи твой стек должен выполнять? Какой у него должен быть интерфейс? Почему он должен быть на массиве? Какие элементы он должен хранить?