Иллюстрированный самоучитель по практике программирования

Реализация на C++

И снова, как и в предыдущей версии, Csv::getfield абсолютно тривиальна, а Csv::getnfield настолько коротка, что воплощена прямо в описании класса.

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Реализация на C++

Тестовая программа представляет собой несколько упрощенный вариант предыдущей версии:

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Реализация на C++

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Реализация на C++

Использование библиотеки в C++ незначительно отличается от версии на С. В зависимости от компилятора новая версия в сравнении с С-версией дает замедление от 40% до четырех раз на большом файле из 30 000 строк примерно по 25 полей на строку. Как мы уже выясняли при оценке быстродействия программы markov, подобный разброс зависит от степени проработанности используемых библиотек. Последнее, что остается добавить: исходный код версии C++ получился примерно на 20% короче.

Упражнение 4.5
Введите в версию C++ оператор [ ], чтобы к полям можно было обращаться как к csv[i].

Упражнение 4.6
Напишите библиотеку CSV на Java, а затем сравните все три версии с точки зрения простоты и ясности, надежности и скорости.

Упражнение 4.7
Перепишите C++ версию кода CSV с использованием класса STL iterator.

Упражнение 4.8
Версия на C++ предоставляет возможность нескольким независимым экземплярам Csv работать одновременно, никак не мешая друг другу, – в этом выразилось важное достоинство инкапсуляции всего состояния объекта, экземпляры которого можно порождать многократно. Измените версию на С так, чтобы добиться подобного эффекта; для этого замените глобальные структуры данных структурами, выделение памяти для которых и инициализация осуществляются явным образом с помощью отдельной функции csvnew.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.