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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация алгоритма сортировки "ручками", Нужны аргументы "ЗА" 
V
    Опции темы
Любитель
Дата 22.8.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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




 ! 
Любитель
Предлагаю всем перестать ругаться и перевести дискусию в мирное русло!



--------------------
PM MAIL ICQ Skype   Вверх
alexvs11
Дата 22.8.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


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

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



лучше всего коллегам ТС можно доказать приведя код сортировки и сравнение с STL по эффективности, желательно шаблонный и работающий со всеми типами контейнеров
PM MAIL   Вверх
Abyx
Дата 22.8.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



alexvs11, а эффективность(стоимость) написания и поддержки кода сравнивать будем?
PM MAIL   Вверх
alexvs11
Дата 22.8.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


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

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



Abyx, думаю это сразу станет очевидным

PM MAIL   Вверх
ИванМ
Дата 22.8.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Цитата(borisbn @  22.8.2010,  12:04 Найти цитируемый пост)
Молодые специалисты на работе спрашивают: "Зачем нужно уметь реализовывать алгоритмы сортировки, поиска и т.п., если они уже написаны ( std::sort, std::find_if и т.д. ) ?"

Для того, что бы из словосочетания "молодой специалист" исключить слово "молодой".
PM MAIL   Вверх
Леопольд
Дата 23.8.2010, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(djamshud @  22.8.2010,  13:54 Найти цитируемый пост)
Код
std::sort<sortfnc>(start,end);
В таком случае функция подставилась бы, а при желании и заинлайнилась, во время компиляции. 
В параметрах шаблона передается только информация о типе. Для классов (функциональных объектов), это подойдёт, но не для функций, их нельзя инстанцировать. Однако это не означает что функция не встроится.

Добавлено @ 09:44
Цитата(Abyx @  22.8.2010,  14:37 Найти цитируемый пост)
Твой g++ - гуан*, и STL в нем гуан*.
g++ не его. А утверждение голословное и необдуманное.


Это сообщение отредактировал(а) Леопольд - 23.8.2010, 09:45


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
djamshud
Дата 23.8.2010, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Леопольд, в параметры шаблонов можно передавать любые значения времени компиляции. Функцию тоже можно передать, как-то так:

Код

template<void(*bar)()>
void foo(){
bar();}




--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Леопольд
Дата 23.8.2010, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
template<void(*bar)()>
void foo(){
bar();}
Это не скомпилируется. Я же говорил что шаблоны это не копипаст... smile
Этот код можно переписать так:
Код
typedef void(*bar)();
bar();


Не, нельзя. Разные вещи...

Это сообщение отредактировал(а) Леопольд - 23.8.2010, 10:10


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Abyx
Дата 23.8.2010, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Леопольд @  23.8.2010,  10:40 Найти цитируемый пост)
В параметрах шаблона передается только информация о типе.

А еще там можно передать константу, например указатель на функцию. Не знали?
PM MAIL   Вверх
djamshud
Дата 23.8.2010, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Леопольд, данунах?! :) УМВР


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Леопольд
Дата 23.8.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Abyx @  23.8.2010,  10:03 Найти цитируемый пост)
А еще там можно передать константу, например указатель на функцию.
Кхм... Никогда не пробовал. Действтельно, что мешает...



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
djamshud
Дата 23.8.2010, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

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



Леопольд, я же говорил, шаблоны - это копипаст :)


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Леопольд
Дата 23.8.2010, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(djamshud @  23.8.2010,  10:12 Найти цитируемый пост)
Леопольд, я же говорил, шаблоны - это копипаст smile 
Всегда готов "подставить ножку" если кто-то споткнулся... smile

Код
template<typename T>
void foo(){
    T()();
}
template<typename T, T& bar>
void foo(){
    bar();
}

void bar(){
    std::cout<<"test"<<std::endl;
}
struct Bar{
    void operator() (){
        std::cout<<"test"<<std::endl;
    }
};

int main(){

    foo<void(), bar>();
    foo<Bar>();

    return 0;
}

Так будет более обобщённо.

Это сообщение отредактировал(а) Леопольд - 23.8.2010, 10:27


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
xvr
Дата 23.8.2010, 15:09 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(djamshud @  22.8.2010,  14:25 Найти цитируемый пост)
А так как std::sort может быть уже скомпилированной, 
Не может - она шаблонная
Цитата

в нее не заинланиться даже при желании.
При желании (и доброй воле) компилятора в нее всегда можно заинлайнится (т.к. она шаблонная - см. выше)  smile 



PM MAIL   Вверх
ИванМ
Дата 23.8.2010, 15:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



Цитата(borisbn @  22.8.2010,  12:04 Найти цитируемый пост)
"Зачем нужно уметь реализовывать алгоритмы сортировки, поиска и т.п., если они уже написаны ( std::sort, std::find_if и т.д. ) ?"

На счет поиска. Если кто-то не умеет реализовывать алгоритм поиска, то он не знает конструкций for и if, а если он их не знает, то до звания "специалиста" ему далеко.
На счет сортировки. Что значит "уметь"? Есть, например, простой алгоритм сортировки "пузырька". Если уметь значит знать его наизусть, то это не сложно, и смысла большого в этом нет, т.к. этот алгоритм годится только в простейших программах. Что касается более сложных и оптимальных алгоритмов (пирамидальный и проч.), то они довольно сложны, и выучивать их нет смысла. Всегда можно обратиться в справочник и проч..

Это сообщение отредактировал(а) ИванМ - 23.8.2010, 15:18
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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