Василий Дёмин, даже при передачи по ссылке в начале программы будет выделение и копирование в динамическую структуру, того что и так есть в программе как определение константы, собственно поэтому и ввели string_view, по сути const char* с методами длины. сравнения и т.д.
Василий Дёмин, тогда уж string_view из нового стандарта, string всё время будет копировать (при использовании "в лоб"), а здесь просто фиксированные куски текста.
Какой массив
Строка это массив чего?
Что нужно выводить?
Символ '2' и число 2 это разное. Скорее одинаковое это число 32h (=50 в дес. с.с.) и код символа '3', равный 32h.
Для начала, строка и число это разные структуры данных. Строка это массив символов (наиболее частое предтавлеие). Вы выводите начиная со второго символа (байта) (индекс 1) строку.
Хотя можете не исправлять. Просто в случае and ax, 15 осталось бы только значение цифры (0, 1, 2 и т.д.) т.к. коды символов '0', '1', '2'... это 30h, 31h, 32h... Но т.к. они всё равно отстоят на 1 друг от друга, то '1'*5 = 31h*5= 0F5h просто вычитается там вместо пяти.
Хотя предварителльная сортировка может быть особо сложность алгоритмическую не уменьшит. Т.к. без неё не "ищем первое ребро...", а "ищем минимальное ребро..."; что так, что иначе, это один проход списка, но в первом случае найдём конечно раньше.
Ну вот отказался и тайминги издержек выводит нулевые типа "i0 \ o0 \ w0 \ w0 \ i0 ..." приразмере порции 2-3 Мб или больше, т.к. вычислительные операции тогда примерно равны по длительности чтению-записи.
SetFileValidData не удалось вообще вызвать так, чтобы не было ошибки. А вот резервация размера файла с SetEndOfFileEx помогает. Но только улучшает ситуацию если указано FILE_FLAG_WRITE_THROUGH в флагах, иначе не влияет.
Армянское Радио, нет, т.к. здесь 2 файла и тестирую на 32-битной системе. Ну и по логике здесь потоковая обработка, а не операции со случайным доступом.
С выводом русских букв в консоль иногда встречаются проблемы кстати