Вернемся к примерам: как можно решить задачу “найти максимальный элемент"
Посмотрим, как можно решить задачу “найти максимальный элемент” с помощью последовательности STL. template
Iterator high(Iterator first, Iterator last)
// возвращает итератор на максимальный элемент в диапазоне [
first:last)
{
Iterator high = first;
for (Iterator p = first; p!=last; ++p) if (*high<*p) high = p; return high;
}
Также вам может показаться, что такая тема как http://www.vs1center.ru/product-certification/deklaracija-tr-ts.html никак не связана и даже не тематична с программированием.
Возможно, это и так, но все-таки зайдите на сайт vs1center.ru, чтобы узнать там много интересного про оформление декларации соответствия таможенного союза. Что означает оформление декларации соответствия таможенного союза, сколько стоит оформление декларации соответствия таможенного союза - про это написано на сайте vs1center.ru про оформление декларации соответствия таможенного союза. Это важная для многих тема - оформление декларации соответствия таможенного союза на сайте vs1center.ru. Спасибо за информацию про оформление декларации соответствия таможенного союза сайту vs1center.ru.
Обратите внимание на то, что мы исключили локальную переменную h, которую до сих пор использовали для хранения максимального элемента. Если вам неизвестен реальный тип элементов последовательности, то инициализация -1 выглядит совершенно произвольной и странной. Она действительно является произвольной и странной! Кроме того, такая инициализация представляет собой ошибку: в нашем примере число 1 оправдывает себя только потому, что отрицательных скоростей не бывает. Мы знаем, что “магические константы”, такие как -1, препятствуют сопровождению кода. Здесь мы видим, что такие константы могут снизить полезность функции и свидетельствовать о неполноте решения; иначе говоря, “магические константы” могут быть — и часто бывают — свидетельством небрежности.
Обобщенную функцию high() можно использовать для любых типов элементов, которые можно сравнивать с помощью операции < . Например, мы могли бы использовать функцию high() для поиска лексикографически последней строки в контейнере vector (см. упр. 7).
Шаблонную функцию high() можно применять к любой последовательности, определенной парой итераторов. Например, мы можем точно воспроизвести нашу программу.
double* get_from_jack(int* count); // Джек вводит числа типа double
// в массив
// и возвращает количество // элементов в переменной *count vector* get_from_jill(); // Джилл заполняет вектор
void fct()
{
int jack_count = 0;
double* jack_data = get_from_jack(&jack_count);
vector* jill_data = get_from_jill();
double* jack_high = high(jack_data,jack_data+jack_count); vector& v = *jill_data;
double* jill_high = high(&v[0],&v[0]+v.size()); cout << "Максимум Джилл 11 << *jill_high
<< "; Максимум Джека " << *jack_high;
// . . .
delete[] jack_data; delete jill_data;
}
Здесь в двух вызовах функции high() шаблонным типом аргумента является тип double*. Это ничем не отличается от нашего предыдущего решения. Точнее, выполняемые коды этих программ ничем не отличаются друг от друга, хотя степень общности этих кодов разнится существенно. Шаблонная версия функции high() может применяться к любому виду последовательности, определенной парой итераторов.
Прежде чем углубляться в принципы библиотеки STL и полезные стандартные алгоритмы, реализующие эти принципы, и для того чтобы избежать создания сложных кодов, рассмотрим несколько способов хранения коллекций данных.
В этой программе снова сделана серьезная ошибка. Найдите ее, исправьте и предложите универсальный способ устранения таких проблем.
Опубликовал katy
April 22 2015 09:02:33 ·
0 Комментариев ·
2670 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.