Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Назначение алгоритма очевидно из его названия. Алгоритм можно применять только для тех контейнеров, которые обеспечивают произвольный доступ к элементам,
— этому требованию удовлетворяют массив, вектор и двусторонняя очередь, но не удовлетворяет список.
В связи с этим класс 1ist содержит метод sort(), решающий задачу сортировки.
Алгоритм sort имеет две сигнатуры:
tempiate<class RandomAccessIt> void sort(RandomAccessIt fist, RandomAccessIt last);
tempiate<class RandomAccessIt> void sort(RandomAccessIt fist, RandomAccessIt last, Compare comp);
Первая форма алгоритма обеспечивает сортировку элементов из диапазона [first,last), причем для упорядочения по умолчанию используется операция <, которая должна быть определена для типа Т.
Т — тип данных, содержащихся в контейнере.
Таким образом, сортировка по умолчанию — это сортировка по возрастанию значений. Например:
int main() {
double arr[6] = {2.2, 0.0, 4.4, 1.1, 3.3, 1.1};
vector<double> v1(arr, arr + 6);
Sort (v1.begin(), v1.end());
Print(v1);
Return 0;
}
Результат выполнения программы:
0 1.1 1.1 2.2 3.3 4.4
Вторая форма алгоритма sort позволяет задать произвольный критерий упорядочения.
Для этого нужно передать через третий аргумент соответствующий предикат, то есть функцию или функциональный объект, возвращающие значение типа bool. Использование функции в качестве предиката было показано выше.
Использованию функциональных объектов посвящен следующий раздел.
Дата публикования: 2014-11-28; Прочитано: 250 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!