and-se / 1kurs-vesna-2018

0 stars 2 forks source link

Task3.1 - Zolotuhin #5

Closed and-se closed 6 years ago

and-se commented 6 years ago

Запустите программу - и введите 12345. Потом посмотрите, что программа считает из файла. Всё ли хорошо?

В целом всё работает неплохо. Правда вот эта строчка:

char temp[stringSize]; Эх, ну любите же Вы пользоваться "современным" С++. Имея в руках такое средство, можно вообще сделать это задание без new/delete malloc/free. Но в данном случае знание об этом инструменте сделало Вашу реализацию не очень эффективной как по памяти, так и по количеству операций:

  • Вы в один момент храните две копии одной и той же строки - в string (над которым Вы далее сделаете free), и в temp.
  • У вас два копирования строки - сначала в temp, а потом в новый string.

Подумайте, можно ли обойтись одним копированием без промежуточной переменной temp?

MrFang commented 6 years ago

@and-se Fixed

and-se commented 6 years ago

Работает. Только вместо массива char strings[2] и хитрого жонглирования чётностью-нечётностью итерации можно было бы просто объявить char bufer и char* newBufer. newBufer используется только в момент переноса информации из старого буфера в новый внутри итерации цикла, после чего происходит bufer = newBufer.

Также можно убрать закоментированную старую версию функции - она есть в истории git.