Название: Сортировка массива qsort Отправлено: chu от Апрель 05, 2013, 09:40 Не получается отсортировать массив.
Пишу так: Код: #include "widget.h" Что не так? Название: Re: Сортировка массива qsort Отправлено: VPS от Апрель 05, 2013, 09:50 А что это за тип: (char * const *) a?
Название: Re: Сортировка массива qsort Отправлено: chu от Апрель 05, 2013, 09:55 А что это за тип: (char * const *) a? скопировал это из документации к методу qsortНазвание: Re: Сортировка массива qsort Отправлено: chu от Апрель 05, 2013, 10:01 Исправил:
Код: static int cmp(const void *a, const void *b) vps, спасибо! Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 05, 2013, 10:01 А что это за тип: (char * const *) a? Это указатель на константный указатель на char, что непонятно :) ?Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 05, 2013, 10:05 Исправил: У Вас элемент - один char, его и сортируйтеКод: static int cmp(const void *a, const void *b) Код
И здесь так Код (без *) Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 05, 2013, 10:09 ну тогда уж и не
Код: qsort(&arr[0], 20, sizeof(char *), cmp); Код: qsort(&arr[0], 20, sizeof(char), cmp); а еще лучше Код: std::sort(&arr[0],&arr[20]); Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 05, 2013, 10:15 P.S опередили :) К слову: qsort (из stdlib) часто оказывается заметно шустрее std::sort (qSort). Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 10:19 И я хочу)
Код
Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 05, 2013, 10:28 И я хочу) тогда уж так:Код
Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 10:36 И я хочу) тогда уж так:Код
Аха) Но я бы, наверное vector на std::array<char, N> и ещё лямбду на std::less заменил бы) Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 05, 2013, 10:41 Аха) Но я бы, наверное vector на std::array<char, N> c std::array<char, N> согласен, а лямбду надо оставить :) (меняем один больше на меньше и получаем обратный порядок)и ещё лямбду на std::less заменил бы) Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 10:49 Аха) Но я бы, наверное vector на std::array<char, N> c std::array<char, N> согласен, а лямбду надо оставить :) (меняем один больше на меньше и получаем обратный порядок)и ещё лямбду на std::less заменил бы) Но и это всё фигня, на самом деле) Без виджита это всё равно работать не будет(( Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 05, 2013, 11:09 Но и это всё фигня, на самом деле) Фигня в том, что мы забыли проинициализировать генератор, например так:Без виджита это всё равно работать не будет(( Код
Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 05, 2013, 13:51 Код: std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, " ")); Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 14:02 Код: std::copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, " ")); Ещё как вариант, можно задействовать другой крутой сынтаксис: Код
И потом, может ли ваш народный printf выводить данные, например в файл? Нет? А в osstream_iterator можно передать объект на ofstream, например, и писать данные уже в файл. Без лишних телодвижений) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 05, 2013, 15:38 Код
И потом, может ли ваш народный printf выводить данные, например в файл? Нет? А в osstream_iterator можно передать объект на ofstream, например, и писать данные уже в файл. Без лишних телодвижений) А с printf я могу ничего и не передавать, а назначить вывод в файл при запуске приложения :)Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 16:04 Код
И потом, может ли ваш народный printf выводить данные, например в файл? Нет? А в osstream_iterator можно передать объект на ofstream, например, и писать данные уже в файл. Без лишних телодвижений) А с printf я могу ничего и не передавать, а назначить вывод в файл при запуске приложения :)Т.е. я правильно понимаю, что для Вас типонебезопасная сишная функция printf предпочтительнее стандартному механизму потоков ввода-вывода? Вся эта концепция заложенная в основу потоков ввода-вывода, наверное, была придумана от нечего делать) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 05, 2013, 16:43 Вся эта концепция заложенная в основу потоков ввода-вывода, наверное, была придумана от нечего делать) Какая "вся эта" ??? Вот Вы блеснули такой конструкциейКод Которую я наблюдал тут и сям не раз. Однако сам бы писал напр так Код Ну 2 строчки вместо одной - но делает все что мне надо и проблем у меня никаких. Спрашиваю у Вас как сделать это "в современном стиле" - ответа не получаю. Что мне остается думать? Что все оте ostream_iterator<.. - дешевые понты чтобы пустить пыль в глаза. Или это не так? :) Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 05, 2013, 17:08 Вся эта концепция заложенная в основу потоков ввода-вывода, наверное, была придумана от нечего делать) Какая "вся эта" ??? Имеется ввиду концепция единого интерфейса при работе с потоками ввода-вывода. Фишка в том, что все операции с обычными участками ввода-вывода, т.е. файлами, консолью, блоками памяти и т.д. поддерживают единый интерфейс. И средства, которые предоставляет этот механизм и сама архитектура гораздо более удобнее, гибче и безопаснее. Стоит ли говорить о том, что всё это семейство функций printf плохо расширяется, поскольку написаны лишь для базовых C типов? Стоит ли мне перечислять все недостатки и потенциальные грабли от использывания printf? Кстатии, одним из основных достоинств потоков ввода-вывода является это безболезненная адаптация к введению новых классов.. Вот Ваш пример ниже: Код Ну 2 строчки вместо одной - но делает все что мне надо и проблем у меня никаких. Спрашиваю у Вас как сделать это "в современном стиле" - ответа не получаю. Что мне остается думать? Что все оте ostream_iterator<.. - дешевые понты чтобы пустить пыль в глаза. Или это не так? :) А давайте представим сейчас, что массив содержит не какой-нить базовый C тип, а что-нибудь чуть более сложное.. Вы всё равно упорно будете использовать printf? Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 06, 2013, 10:36 Фишка в том, что все операции с обычными участками ввода-вывода, т.е. файлами, консолью, блоками памяти и т.д. поддерживают единый интерфейс. И средства, которые предоставляет этот механизм и сама архитектура гораздо более удобнее, гибче и безопаснее. Если взглянуть более узко/практично, то оказывается что далеко не все укладывается в рамки красивой концепции. Напр вывод на консоль бедноват (нечем форматить). При копировании в файл вероятно придется крутить индиану, а нередко и писать то чего в памяти нет - или наоборот. При выводе на др устройство возникнут свои проблемы (напр размер страницы на принтере). С точки зрения "расширяемости" - ну при любом раскладе мою структуру за меня никто не выведет, нужно писать код для I/O. И не будет он общим для консоли/памяти/файла. Возможно Вы имели ввиду что в дальнейшем обобщать удобнее (подсовывая разные итераторы в одну схему). Ну это достижимо и с помощью операторов >> и << Ну хорошо, общность так общность. Вот я хочу вывести в QIODevice (напр в QFile). Как это у Вас будет выглядеть для int и для произвольной структурки (напр всего 2 int)? Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 06, 2013, 11:01 Фишка в том, что все операции с обычными участками ввода-вывода, т.е. файлами, консолью, блоками памяти и т.д. поддерживают единый интерфейс. И средства, которые предоставляет этот механизм и сама архитектура гораздо более удобнее, гибче и безопаснее. Если взглянуть более узко/практично, то оказывается что далеко не все укладывается в рамки красивой концепции. Напр вывод на консоль бедноват (нечем форматить). При копировании в файл вероятно придется крутить индиану, а нередко и писать то чего в памяти нет - или наоборот. При выводе на др устройство возникнут свои проблемы (напр размер страницы на принтере). Советую почитать про такие вещи как манипуляторы (пользовательские манипуляторы), форматные флаги, поля, эффекторы и т.д. С точки зрения "расширяемости" - ну при любом раскладе мою структуру за меня никто не выведет, нужно писать код для I/O. И не будет он общим для консоли/памяти/файла. Возможно Вы имели ввиду что в дальнейшем обобщать удобнее (подсовывая разные итераторы в одну схему). Ну это достижимо и с помощью операторов >> и << Ну хорошо, общность так общность. Вот я хочу вывести в QIODevice (напр в QFile). Как это у Вас будет выглядеть для int и для произвольной структурки (напр всего 2 int)? Для моей произвольной структурки это будет выглядеть также, как и для int) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 06, 2013, 12:21 Советую почитать про такие вещи как манипуляторы (пользовательские манипуляторы), форматные флаги, поля, эффекторы и т.д. Ну если это так просто, то почему бы Вам не тиснуть неск строк кода? Или Вы советуете то что сами не делаете? :)Для моей произвольной структурки это будет выглядеть также, как и для int) То же самое - предъявляем не только словеса, но и пример кодаНазвание: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 06, 2013, 18:36 Советую почитать про такие вещи как манипуляторы (пользовательские манипуляторы), форматные флаги, поля, эффекторы и т.д. Ну если это так просто, то почему бы Вам не тиснуть неск строк кода? Или Вы советуете то что сами не делаете? :)И при этом нам бы ещё хотелось иметь возможность использовать эту конструкцию в таком цепочечном выражении, типа: Код Для этого народ придумал такую штуку, как эффектор. пример: Код
:) И заметьте, что я могу передавать в эффектор Table как обычный C массив, так и список, вектор, array и т.д.. И выводить данные в любой поток вывода, без лишних телодвижений. Если использовать народный printf, то код моментально бы превратился в огород.. Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 08, 2013, 12:03 Во всем этом нет чувства меры. Создается класс, (ну разумеется template, как же без него), привлекается новейший стандарт и.т.п. А чему же все это посвящено? Оказывается всего лишь печати по N элементов в строке. При этом до ф-ционала "допотопного" printf еще очень далеко (подложка пробелами, число знаков после запятой и др).
Вот именно за это многие (включая меня) и не любят Александреску и его птенцов - наворочено много, а дела/ф-ционала - пшик. Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 08, 2013, 12:18 Во всем этом нет чувства меры. Создается класс, (ну разумеется template, как же без него), привлекается новейший стандарт и.т.п. А чему же все это посвящено? Оказывается всего лишь печати по N элементов в строке. При этом до ф-ционала "допотопного" printf еще очень далеко (подложка пробелами, число знаков после запятой и др). Вот именно за это многие (включая меня) и не любят Александреску и его птенцов - наворочено много, а дела/ф-ционала - пшик. Нет, это Вы так говорите, пока видите лишь необходимость выводить в консоль стандартные C типы.. Достаточно чуть усложнить задачу (да даже просто сменить тип контейнера, на, например, std::list) как тут же ситуация изменится на противоположную.. Я уже не говорю о том, что Вы будете делать с Вашим printf, когда возникнет необходимость выводить данные в разные потоки.. А если ещё тип элементов контейнера изменится? Что касается управление форматирования, то также можно реализовать. например число знаков после запятой, легко: Код
Помимо этого есть ещё куча манипуляторов, как с параметрами, так и без них. (И никто Вам не мешает написать свой) Вот некоторые из них (просто перечислю, без описания): flush, hex, oct, dec, ws, showbase/noshowbase, showpos/noshowpos, uppercase/nouppercase, showpoint/noshowpoin, left, right, internal, scintific/fixed, setbase, setfill, setw и т.д.. Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 08, 2013, 12:49 Помимо этого есть ещё куча манипуляторов, как с параметрами, так и без них. Конечно есть, я с этим не спорю. Но все это выглядит как-то тяжеловесно, нет лаконичности и удобства простого printf, заряжаем пушку для стрельбы по воробьямНазвание: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 08, 2013, 13:23 Конечно есть, я с этим не спорю. Но все это выглядит как-то тяжеловесно, нет лаконичности и удобства простого printf, заряжаем пушку для стрельбы по воробьям Цитата: Igors Вот именно за это многие (включая меня) и не любят Александреску и его птенцов - наворочено много, а дела/ф-ционала - пшик. Вы уж определитесь, спорите или не спорите, функционала пшик или наворочено ;DНу и, собственно вас никто не заставляет. А еще есть http://www.boost.org/doc/libs/1_53_0/libs/format/doc/format.html - и компактно, и типобезопасно. Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 08, 2013, 18:07 Вы уж определитесь, спорите или не спорите, функционала пшик или наворочено ;D Я говорил что печально видеть "навороченый пшик" что, увы, часто случается с теми кто слепо следует моде :)Ну и, собственно вас никто не заставляет. Ну так это творческое развитие идей printfА еще есть http://www.boost.org/doc/libs/1_53_0/libs/format/doc/format.html - и компактно, и типобезопасно. Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 08, 2013, 18:22 Ну так это творческое развитие идей printf Вообще то, это как раз развитие темы паттерна эффектора) И основная фишка там как раз абстрагироваться от конкретного типа данных и потока вывода.. Я говорил что печально видеть "навороченый пшик" что, увы, часто случается с теми кто слепо следует моде :) Ещё печальней наблюдать за тем, как некоторые ретрограды изобретают немыслимые костыли, а потом всячески ищут оправдания своим архитектурным изыскам) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 08, 2013, 19:35 Ещё печальней наблюдать за тем, как некоторые ретрограды изобретают немыслимые костыли, а потом всячески ищут оправдания своим архитектурным изыскам) Ну хорошо, пусть я ретроград, а Вы прогрессивный талант :) Но я ничего не изобретал, написал незатейливо printf - и все дела. А Вы целый template класс соорудили только для того чтобы строку перевести. Зачем же говорить что это я изобретаю и доказываю - не было такого :)Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 08, 2013, 20:37 А Вы целый template класс соорудили только для того чтобы строку перевести. Вот ключевой момент: считать создание класса/шаблона экстраординарным событием. ;)2m_ax Igors не использует C++, он пишет на старом добром процедурном C с использованием некоторых возможностей C++: коллекции, немного классов (в основном структуры), очень редко - шаблоны для примитивных вещей. Все. Все твои "изыски" ему просто не нужны... Пока у него самого не возникнет в этом потребности, а ее скорее всего не возникнет, потому что есть не скрываемый страх перед всем новым и неизвестным. ;) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 09, 2013, 07:16 Вот ключевой момент: считать создание класса/шаблона экстраординарным событием. ;) Создание класса/структуры ничем экстраординарным не является. А вот создание template - безусловно. Нужны веские основания, и даже если они есть - часто лучше воздержаться. Потому что дальше будет писаться в угоду уже созданным template, что нередко полностью извращает логику приложения. Хороший пример разумных template - те же исходники Qt, никаких трудностей с пониманием не возникает, потому что "в меру" и "на своем месте".QPoint/QPointF QPolygon/QPolygonF и.т.д Почему же это не template - ведь все идентично? [/offtop] Old, по поводу Ваших оценок - они во многом справедливы :) Но все же "не судите и не судимы будете" Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 09, 2013, 08:49 А вот создание template - безусловно. Нужны веские основания, и даже если они есть - часто лучше воздержаться. Потому что дальше будет писаться в угоду уже созданным template, что нередко полностью извращает логику приложения. Хороший пример разумных template - те же исходники Qt, никаких трудностей с пониманием не возникает, потому что "в меру" и "на своем месте". Поясните пожалуйста, как бы "полностью извратилась логика приложения", если бы типы QPoint и QPointF происходили из одного шаблона. :)QPoint/QPointF QPolygon/QPolygonF и.т.д Почему же это не template - ведь все идентично? Кстати, трудности с пониманием как правило от незнания. :) Если что-то не понимаешь, не нужно винить автора "непонятного", лучше постараться узнать то, что знает он и сразу все станет понятным. Old, по поводу Ваших оценок - они во многом справедливы :) Но все же "не судите и не судимы будете" В писание программ на C нет ничего дурного, очень много людей делают это каждый день. :)Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 09, 2013, 10:12 Кстати, трудности с пониманием как правило от незнания. :) Какой-то у Вас ход мысли.. ну "упрощенный". То есть если я "знаю" - то я обязательно должен это применять - иначе "неграмотный", так, что ли? :) Результат печальный: текст превращается в демонстрацию знаний - в ущерб содержательной части. Дальнейшая поддержка такого кода невыносима. Если что-то не понимаешь, не нужно винить автора "непонятного", лучше постараться узнать то, что знает он и сразу все станет понятным. например число знаков после запятой, легко: У человека впервые это увидевшего изучение подробностей Table уже займет минуты. Тут возникает др задача - число знаков. И класс Table уже моментально забыт (наигрался), лепится первое подходящее. "Не плодите сущности" - фраза избитая но верная. Зачем был нужен класс-однодневка с ничтожным КПД? Видимо только чтобы потренироваться с decltype :)Код
Поясните пожалуйста, как бы "полностью извратилась логика приложения", если бы типы QPoint и QPointF происходили из одного шаблона. :) Так я же незнающий/непонимающий, чего же Вы у меня спрашиваете? :) Это Вы мне объяснитеНазвание: Re: Сортировка массива qsort Отправлено: Old от Апрель 09, 2013, 10:27 Какой-то у Вас ход мысли.. ну "упрощенный". То есть если я "знаю" - то я обязательно должен это применять - иначе "неграмотный", так, что ли? :) Нет, просто вы так "упрощенно" его поняли. :)Не нужно обвинять в неправильности то, что не понимаете. У человека впервые это увидевшего изучение подробностей Table уже займет минуты. Тут возникает др задача - число знаков. И класс Table уже моментально забыт (наигрался), лепится первое подходящее. "Не плодите сущности" - фраза избитая но верная. Зачем был нужен класс-однодневка с ничтожным КПД? Видимо только чтобы потренироваться с decltype :) Нет. Пока вы "играетесь" с одними float все замечательно, вы в 100500 местах вывели их printf. А теперь попробуйте заменить этот float на NewNumberType, во всех 100500 printf. :)Так я же незнающий/непонимающий, чего же Вы у меня спрашиваете? :) Это Вы мне объясните Вот именно, но мнение свое высказали - это все плохо, непонятно и к использованию непригодно. :)Но забыли добавить, что это только для вас. ;) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 09, 2013, 15:47 ..что не понимаете. Откуда такое напор на мое непонимание? :) Я понял все что написал m_ax, но хорошим решением это не считаю. Ну вышел я из того возраста когда всем восторгаются и все берут на вооружение. Вам кстати тоже недолго осталось :)Вот именно, но мнение свое высказали - это все плохо, непонятно .. Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 09, 2013, 16:27 но хорошим решением это не считаю. Так покажите хорошее решение. printf это не оно. :)Ну вышел я из того возраста когда всем восторгаются и все берут на вооружение. Вам кстати тоже недолго осталось :) А это от возраста не зависит. ;)Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 09, 2013, 17:02 Так покажите хорошее решение. printf это не оно. :) Хорошее решение - уметь ждать и (пока) ничего не делать. Что пока нужно? Напечатать. Ну и делаю тем же printf или cout << или еще как. Через какое-то время накопится десяток, ну а может и сотня таких. Стану ли я испытывать неудобства, захочу ли это как-то организовать? Не знаю, может и нет. Но если да - я буду хорошо знать что (из моего десятка/сотни). А "скороспелое обобщение" ничего хорошего не дает. Однако Вы уклонились от ответа: почему же QPoint(F) не template - а ведь вроде бы напрашивается? Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 09, 2013, 17:43 Однако Вы уклонились от ответа: почему же QPoint(F) не template - а ведь вроде бы напрашивается? Понятия не имею. Я не являюсь разработчиком Qt.Название: Re: Сортировка массива qsort Отправлено: alex312 от Апрель 09, 2013, 17:55 Однако Вы уклонились от ответа: почему же QPoint(F) не template - а ведь вроде бы напрашивается? И ничего там не напрашивается.ну и так, к сведению: Qt начали разрабатывать в 1991-м, шаблоны были только представлены в 1993-м Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 09, 2013, 20:41 Так покажите хорошее решение. printf это не оно. :) Хорошее решение - уметь ждать и (пока) ничего не делать. Что пока нужно? Напечатать. Ну и делаю тем же printf или cout << или еще как. Через какое-то время накопится десяток, ну а может и сотня таких. Стану ли я испытывать неудобства, захочу ли это как-то организовать? Не знаю, может и нет. Но если да - я буду хорошо знать что (из моего десятка/сотни). А "скороспелое обобщение" ничего хорошего не дает. Причём всегда у Вас наблюдается какая то предсказуемая неудовлетворённость всем тем, что выходит за рамки, как заметил Old, концепций С-подхода в программировании.. :( Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 10, 2013, 09:33 [Причём всегда у Вас наблюдается какая то предсказуемая неудовлетворённость всем тем, что выходит за рамки, как заметил Old, концепций С-подхода в программировании.. :) Та я ж не против "модерна" и с интересом присматриваюсь к новому. Вот только в оценках не согласен. "Ах какая изумительная конструкция, давайте ее немедленно воткнем в свой код". А стоит чуть копнуть - и выясняется что толку-то не очень много. Обычно достаточно предложить чуть-чуть более сложную задачу - и все ("достаточно одной таблетки").:( Зато самооценка "начитавшегося" резко возрастает :). Многочисленные "вы не понимаете", нотки превосходства ("ну и так, к сведению"). Он наивно полагает что забив себе голову модными штучками - он сильно вырос. Ну жизнь и реальные задачи покажут Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 10, 2013, 16:03 А стоит чуть копнуть - и выясняется что толку-то не очень много. Обычно достаточно предложить чуть-чуть более сложную задачу - и все ("достаточно одной таблетки"). Правильно - чуть задачу усложнили и printf поплыл, а потоки бодры и веселы. :)Код
Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 10, 2013, 16:47 Правильно - чуть задачу усложнили и printf поплыл, а потоки бодры и веселы. :) Кстати правильно ((i + 1) % 10). А так не возражаю, нормальный человеческий текст, без выкрутасов. Ну поток, да, не так компактно как printf, но зато свои плюсы. Да, оператор << придется определить, это норм. А чего же это Вас не несет в заумность итераторов и темплейтов? Чего же всего лишь скромный цикл for? Это ж "не круто"! Может потому что это не только проще, но и лучше? :) Код
Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 10, 2013, 16:49 Кстати правильно ((i + 1) % 10). Для меня это не важно, я ваш код копипастил. :)А чего же это Вас не несет в заумность итераторов и темплейтов? То что показал я - это примитивная работа с потоком, а m_ax вам вкусности показывал. Но... :)Да, оператор << придется определить, это норм. Для чего его определять? Потоки ваши float'ы уже умеют. :)Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 10, 2013, 18:13 Правильно - чуть задачу усложнили и printf поплыл, а потоки бодры и веселы. :) Код
А чего же это Вас не несет в заумность итераторов и темплейтов? Чего же всего лишь скромный цикл for? Это ж "не круто"! Может потому что это не только проще, но и лучше? :) Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 10, 2013, 18:27 Такие "скромные" циклы for, лучше по-возможности избегать, поскольку Вы себя привязываете к конкретному контейнеру. Не у всех у них есть оператор[]. Вот захочется Вам завтра сменить вектор на список или на обычный C массив, тогда и вспомните.. что лучше.. Для человека, готового переписывать 100500 printfов при изменении типа в контейнере - это не аргумент. :)И это при том, что при компиляции, printf даже не пискнет о невалидных типах, нужно будет 100500 раз запускать и проверять как выводится (неделя времени всего). :) Название: Re: Сортировка массива qsort Отправлено: Igors от Апрель 11, 2013, 11:16 И это при том, что при компиляции, printf даже не пискнет о невалидных типах, нужно будет 100500 раз запускать и проверять как выводится (неделя времени всего). :) Даже древний gcc 4.2 отсыпает варнингТакие "скромные" циклы for, лучше по-возможности избегать, поскольку Вы себя привязываете к конкретному контейнеру. Не у всех у них есть оператор[]. Вот захочется Вам завтра сменить вектор на список или на обычный C массив, тогда и вспомните.. что лучше.. Ну у обычного массива оператор [] есть :) С итераторами - да, универсальнее, но и более громоздко Для человека, готового переписывать 100500 printfов при изменении типа в контейнере - это не аргумент. :) А почему Вы сразу предполагаете какую-то общность и массированное использование? До этого дело доходит относительно редко. Более вероятно что отладочная печать будет убита после того как сыграла свою роль Название: Re: Сортировка массива qsort Отправлено: Old от Апрель 11, 2013, 11:20 С итераторами - да, универсальнее, но и более громоздко и эффективней. Нужно помнить, что каждую итерацию происходит расчет эффективного адреса, вместо простого инкремента для перехода к следующему элементу.Громоздкости никакой нет, если пользоваться новым стандартом. Название: Re: Сортировка массива qsort Отправлено: m_ax от Апрель 11, 2013, 14:29 Ну у обычного массива оператор [] есть :) Аха, есть.. Зато метода size() нет :( |