Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонная функция, сортировка с помощью шаблонной функции 
V
    Опции темы
Djen1k
Дата 12.11.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.3.2009

Репутация: нет
Всего: нет



Вот есть небольшая программка для шаблонной сортировки функции. Сортирует только вектора, требуется чтобы также сортиравала и массивы... Можно ли с  помощью одной шаблонной ф-ции сортировать сразу и массив и вектора? Или нужно для каждого тип данных свой шаблон? И можно ли этот шаблон переориентировать на сортировку массива?
Код

#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;
}


PM MAIL   Вверх
ller
Дата 13.11.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



Так итераторы должны работать и с вектором и с массивом
PM MAIL   Вверх
Djen1k
Дата 13.11.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.3.2009

Репутация: нет
Всего: нет



Действительно "указатели - итераторы для массивов" (С.Б.Липпман "Язык программирования С++ Вводный курс." Четвертое издание 2007) стр - 150.

Я просто сначала не разобрался что указатель - это и есть итератор...
Теперь чтобы отсортировать простой массив с помощью шаблонной функции нужно всего лишь его задать,передав функции указатель на начало и конец массива.Я сделал это так:
Код

const size_t arr_sz = 5;
int int_arr[arr_sz] = {0, 2, -9, 7, 8};
int *pbegin = int_arr;
int *pend = int_arr + arr_sz;
cocktail_sort(pbegin, pend);
for (; pbegin!= pend ;++pbegin)
{
    cout << *pbegin << ' ';
}



Тема исчерпала себя)
ller спасибо, что открыл глаза. smile 

Это сообщение отредактировал(а) Djen1k - 13.11.2009, 02:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.