|
Программирование >> Разработка устойчивых систем
class BinarySearchTest : public TestSuite::Test { enum { sz = 10 }: int* data: int max: Наибольшее число int current: Текущее число, не содержащееся в массиве. Используется в notContainedC) Поиск следующего числа, не содержащегося в массиве int notContainedO ( while(data[current] + 1 == data[current + 1]) current++: if(current >= sz) return max + 1; int retValue = data[current++] + 1: return retValue: void setDataO { data = new int[sz]: assertdmax): Набор входных данных. Пропускаем некоторые значения как для четных, так и для нечетных индексов. for(int i = 0: i < sz: randO 2 == 0 ? max += 1 : max += 2) data[i++] = max: void testlnBoundO ( Проверка для четных и нечетных позиций, присутствующих и отсутствующих в массиве. for(int i = sz: --i >=0:) test (binarySearch(data. data + sz. data[i])): fordnt i = notContainedO: i < max: i = notContainedO) test (!binarySearch(data, data + sz, i)): void testOutBoundsO ( Проверка нижних значений for(int i = data[0]: --i > data[0] - 100:) test (!binarySearch(data. data + sz, i)); Проверка верхних значений for(int i = data[sz - 1]: ++i < data[sz -1] + 100:) test (!binarySearch(data. data + sz, i)): public: BinarySearchTestO { max = current = 0; void runO { srand(time(0)): setDataO: testlnBoundO: testOutBoundsO: delete [] data: int mainO ( srand(time(0)): BinarySearchTest t: t.run(): return t.reportO: } /:- return 0: Часть Стандартная библиотека С++ Стандартный язык С++ не только включает все стандартные библиотеки С (с небольшими дополнениями и изменениями, обеспечивающими безопасность типов), но и дополняет их собственными библиотеками. Эти библиотеки гораздо мощнее своих прототипов из стандартного языка С. При переходе на них достигается практически такой же выигрыш, как при переходе с С на С++. В этой части книги мы подробно рассмотрим важнейшие компоненты стандартной библиотеки С++. Самым полным (но также наименее понятным) источником информации обо всех библиотеках является сам стандарт. Мы стремились представить читателю по возможности более широкую подборку описаний и примеров, которые послужили бы отправной точкой для решения любых задач, требующих применения стандартных библиотек. Впрочем, некоторые темы и приемы на практике применяются редко и в книге не рассматриваются. Если вы не найдете их описаний в этих главах, обратитесь к специализированной литературе; эта книга не заменяет ее, а лишь дополняет. В частности, мы надеемся, что после знакомства с материалом этой части вам будет гораздо проще понять другие книги. Учтите, что в главах этой части не приводится подробная документация по всем функциям и классам стандартной библиотеки С++. За полной документацией обращайтесь к другим источникам, прежде всего - Справочнику по стандартным библиотекам C/C++ П. Дж. Плаугера (Р. J. Plauger) по адресу http: www.dinkum-ware.com. Это превосходный сборник электронной документации по стандартным библиотекам в формате HTML; вы можете просматривать его в браузере при возникновении любых вопросов. Справочник можно изучать непосредственно в режиме подключения или приобрести его для локального просмотра. Он содержит документацию по библиотекам как С, так и С++. Электронная документация хороша не только своей доступностью, но и тем, что в ней удобно производить поиск. В главе 3 (первой в этой части) представлен стандартный класс С++ string - мощный инструмент, упрощающий многие повседневные задачи обработки текста. Большинство операций с символьными строками, для которых в С приходилось писать несколько строк программного кода, выполняются в классе string вызовом одной функции. Глава 4 посвящена библиотеке потоков ввода-вывода. Классы этой библиотеки предназначены для ввода-вывода файлов, строк и операций с системной консолью. Хотя глава 5 не имеет прямого отношения к библиотеке, она необходима для лучшего понимания лвух следующих глав. В главе 6 рассматриваются общие алгоритмы стандартной библиотеки С++. Реализация на базе шаблонов позволяет применять эти алгоритмы к последовательностям объектов. Глава 7 посвящена стандартным контейнерам и их итераторам. Мы начинаем с алгоритмов, потому что для их объяснения достаточно массивов и контейнера vector (а с этим контейнером мы начали работать еще в начале первого тома). Кроме того, вполне естественно использовать с контейнерами стандартные алгоритмы, поэтому знакомство разумнее начать именно с алгоритмов. Самый известный справочник по стандартной библиотеке С++ - Джосьютис Н. С++ Стандартная библиотека. Для профессионалов. СПб.: Питер, 2003.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |