![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Voldemar2004 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
У меня такой вопрос: как избавиться от повторения одного и того же кода. Например у меня есть функция сортировки прямым выбором:
Как бы покрасивее избавиться от повторения кода, ведь код
В книге нашел:
В результате:
-------------------- i_i (';') (V) ![]() |
||||||||||
|
|||||||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
ИМХО самое простое, засунь в inline ф-ию..
|
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
inline, как много в этом звуке... Но тогда придется создавать inline ф-цию, чтобы вставлять ее инлайн-методом в тело другой (сортировки) функции. И по-моему я читал, что компилятор сам определяет, определить ф-цию, как inline или нет.
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Voldemar2004,
-------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| sergejzr |
|
||||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
А почему в простую функцию типа:
Вообще конечно можно шаблоном для разных типов это сделать.
Но я бы например макрос написал (Хоть знаю, что С++ шники макросы не любят, но ИМХО тут подходит
Ты не смотри, что буков много. Компилер это соптимирует практически в 3 строки Добавлено @ 00:15 O, Kuvaldis дело говорит, нефиг велик изобретать |
||||||
|
|||||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
sergejzr,
1. Не хочу тебя огорчать, но зачем писать свое, если есть стандартная шаблонная функция swap() из STL, проверенная и быстро работающая. 2.
Есть хороший способ писать макросы красиво, в несколько строчек - использование символа \ (я когда узнал, был очень рад)
Но макросы использовать - это ОЧЕНЬ плохо 1. Их нельзя отлаживать 2. В них могут быть неявные присвоения 3. Не экономно расходуется память 4. НЕТ ПРОВЕРКИ на соответствие типов. 5. Не очень удобно писать -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Я же уже отписался насчёт неё.
Я знаю, но тогда как раз он становится похож на код. Это как раз может запутать. Но это уже по вкусу. На мелочи вроде этого - макросы не страшны. Нельзя сказать в общем виде, что плохо, а что хорошо. Это как GОТО. Все 5 пунктов в данном случае не важны. А есть вещи, которые без макроса вообще не сделать никак. PS: В данном случае это просто способ не использовать вызовы функции |
||||
|
|||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
sergejzr,
К сожалению, это не тот случай, имхо. Насчет макросов - еще неплохая штука- макрос assert.
Лучше уж inline функцию, из-за 5 пунктов... Т.е. если альтернативы макросам нет, то придется использовать, иначе... -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Voldemar2004, бери и не мучайся
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: нет Всего: 23 |
Проблема решена.
-------------------- i_i (';') (V) ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |