ar*>::sort() { for(size_t i =

Автор admin Среда, 20 мая 2009 11:32

ar*>::sort() { for(size_t i = sizeO; i > 0: i–) for(size_t j = 1; j < i: ++j) if(std::strcmp(this->at(j-l). this->at(j)) > 0) { char* t = this->at(j-l); this->at(j-l) – this->at(j); this->at(j) = t: } } #endif // SORTABLE_H ///:- Шаблон Sortable устанавливает ограничение для всех классов, для которых он специализируется (кроме одного): класс должен содержать оператор >. Полная специализация сортирует векторы типа char*, сравнивая строки С с нуль-завершителями при помощи функции strcmp(). Наличие уточнения this-> в данном слу- Специализация шаблонов 213 чае обязательно1 (этот вопрос рассматривается в разделе «Разрешение имен» этой главы, а также в объяснении к примеру PriorityQueue6.cpp в главе 7). Здесь приведена тестовая программа для файла Sortable.h, в которой используется генератор случайных чисел Urand (см. выше): //: C05:Sortable.cpp //{bor} (из-за присутствия bitset в Urand.h) // Тестирование специализированных шаблонов #include #i nclude #include “Sortable.h” #include “Urand.h” using namespace std: #define asz(a) (sizeof a / sizeof a[0]) char* words[] – { “is”, “running”,


Комментарии закрыты.