std::pair тебе пока ведь и не надо подробно понимать :)std::tie принимает пару и достает ее значения в указанные переменные, т.е. буквально распаковывает пару. std::tie лучше пока тоже особо не изучать т.к. там на самом деле в основе лежит очень глубокий раздел метапрограммирования.GetMinMax просто возвращает два значения - индекс минимального и индекс максимального значений в переданном массиве stream.Т.е. после того, как мы просмотрели все элементы массива через цикл for, мы ставим условие...
for( size_t index = 1; index < stream_length; ++index )) стоят фигурные скобки, то в них записано тело цикла - набор операций для каждой итерации цикла. В теле нашего цикла мы на каждой его итерации можем работать с уникальным индексом элемента массива. 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 и почему эту задачу нельзя было решить иным образом?

Какую ошибку выдает? Где у тебя в вопросе описание ошибки? Где у тебя в вопросе определение твоей структуры? Зачем в объявлении параметра
arrприсутствует словоstruct? Зачем в объявленииarrприсутствуют квадратные скобки?