Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Использование функции сортировки STL



Стандартная библиотека шаблонов включает функции, которые программисты могут использовать, чтобы сортировать массивы контейнеров. Одна из этих функций sort функция. Функция sort выполняет быстрый sort (quicksort) в контейнере.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: #include <iostream>#include <cstdlib>#include <ctime>#include <vector>#include <algorithm>#include <iterator> using namespace std; int random_less_than_50(void) { return (rand() % 50);} int main(int argc, char* argv[]) { // seed the random number generator srand(time(0)); // create a vector with ten random elements (all less than 50) vector<int> v; back_insert_iterator< vector<int> > back_itr(v); generate_n(back_itr, 10, random_less_than_50); // display its contents ostream_iterator<int> out(cout, " "); copy(v.begin(), v.end(), out); // sort the vector sort(v.begin(), v.end()); // display its contents, sorted cout << endl; copy(v.begin(), v.end(), out); return EXIT_SUCCESS;}
Listing 2 Using the sort algorithm

Листинг 2 использует несколько других функций то объяснение ордера. Во-первых, функция STL generate_n используется в Перечислении 2, чтобы заполнить вектор с десятью случайными числами. Эта функция берет в качестве параметров вывод iterator, много элементов, чтобы генерировать, и функция, чтобы использовать, чтобы генерировать каждый элемент. Сгенерированные элементы помещаются в вывод iterator определенный в первом параметре. В этом случае, вывод iterator является a back_insert_iterator для вектора v. Таким образом, все элементы, сгенерированные функцией в третьем параметре, помещаются в конце вектора v. Функция, определенная в третьем параметре, является оберткой для C-библиотечной-функции рэнд. Функция рэнд возвращает случайное число из генератора случайных чисел времени выполнения. Это случайное число может быть довольно большим, таким образом, функция обертки используется, чтобы сократить количество, возвращенное к меньшему диапазону значений.

вид функция может работать только на контейнерах, которые обеспечивают произвольный доступ iterators. Контейнеры такой как вектор, двухсторонняя очередь, и строка все обеспечивают произвольный доступ iterators. Начиная с STL список контейнер не обеспечивает произвольный доступ iterators общего назначения вид функция на a список возразите результатам в ошибке времени компиляции. Так как связанные списки часто должны сортироваться, список у контейнера есть специальное предложение вид функция членства. Перечисление 3 демонстрирует свое использование.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: #include <iostream>#include <cstdlib>#include <ctime>#include <list>#include <algorithm>#include <iterator> using namespace std; int random_less_than_50(void) { return (rand() % 50);} int main(int argc, char* argv[]) { // seed the random number generator srand(time(0)); // create a list with ten random elements // (all less than 50) list<int> ls; back_insert_iterator< list<int> > back_itr(ls); generate_n(back_itr, 10, random_less_than_50); // display its contents ostream_iterator<int> out(cout, " "); copy(ls.begin(), ls.end(), out); // sort the list // The following can NOT be used since lists // do not provide random access iterators // sort(ls.begin(), ls.end()); ls.sort(); // display its contents again cout << endl; copy(ls.begin(), ls.end(), out); return EXIT_SUCCESS;}
Listing 3 Sorting a list

В дополнение к сортировке STL обеспечивает возможность для перестановка содержание контейнера. Перестановка, противоположность сортировки, является случайным расположением данных в наборе. Следующее перечисление демонстрирует функцию STL random_shuffle.





Дата публикования: 2014-11-29; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...