Вот есть небольшая программка для шаблонной сортировки функции. Сортирует только вектора, требуется чтобы также сортиравала и массивы... Можно ли с помощью одной шаблонной ф-ции сортировать сразу и массив и вектора? Или нужно для каждого тип данных свой шаблон? И можно ли этот шаблон переориентировать на сортировку массива?
Код | #include "stdafx.h" #include <string> #include "conio.h" #include <iostream> #include <vector> #include <algorithm> using std::vector; using namespace std;
template< typename Iterator > void cocktail_sort( Iterator first, Iterator last ) { for( --last; first < last; --last, ++first ) { for( Iterator i = first; i < last; ++i ) if ( *(i + 1) < *i ) std::iter_swap( i, i + 1 );
for( Iterator i = last - 1; i > first; --i ) if ( *i < *(i - 1) ) std::iter_swap( i, i - 1 ); } }
int _tmain(int argc, _TCHAR* argv[]) {vector<int> ivec; ivec.push_back(5); ivec.push_back(7); ivec.push_back(2); ivec.push_back(-9); ivec.push_back(0); cocktail_sort(ivec.begin() , ivec.end());
for (vector<int>::const_iterator iter = ivec.begin(); iter != ivec.end(); ++iter) { cout << *iter << " " << endl; } _getch (); return 0; }
|
|