Russian Qt Forum
Октябрь 18, 2024, 20:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Сортировка массива qsort  (Прочитано 24535 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #45 : Апрель 10, 2013, 16:49 »

Кстати правильно ((i + 1) % 10).
Для меня это не важно, я ваш код копипастил. Улыбающийся

А чего же это Вас не несет в заумность итераторов и темплейтов?
То что показал я - это примитивная работа с потоком, а m_ax вам вкусности показывал. Но... Улыбающийся

Да, оператор << придется определить, это норм.
Для чего его определять? Потоки ваши float'ы уже умеют. Улыбающийся
« Последнее редактирование: Апрель 10, 2013, 17:44 от Old » Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #46 : Апрель 10, 2013, 18:13 »

Правильно - чуть задачу усложнили и printf поплыл, а потоки бодры и веселы. Улыбающийся

Код
C++ (Qt)
       for( int i = 0; i < arr.size(); ++i )
               cout << setw( 8 ) << arr[ i ] << ((i % 10)? ", " : "\n");
 

А чего же это Вас не несет в заумность итераторов и темплейтов? Чего же всего лишь скромный цикл for? Это ж "не круто"! Может потому что это не только проще, но и лучше?  Улыбающийся
Такие "скромные" циклы for, лучше по-возможности избегать, поскольку Вы себя привязываете к конкретному контейнеру. Не у всех у них есть оператор[]. Вот захочется Вам завтра сменить вектор на список или на обычный C массив, тогда и вспомните.. что лучше..
« Последнее редактирование: Апрель 10, 2013, 18:15 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #47 : Апрель 10, 2013, 18:27 »

Такие "скромные" циклы for, лучше по-возможности избегать, поскольку Вы себя привязываете к конкретному контейнеру. Не у всех у них есть оператор[]. Вот захочется Вам завтра сменить вектор на список или на обычный C массив, тогда и вспомните.. что лучше..
Для человека, готового переписывать 100500 printfов при изменении типа в контейнере - это не аргумент. Улыбающийся
И это при том, что при компиляции, printf даже не пискнет о невалидных типах, нужно будет 100500 раз запускать и проверять как выводится (неделя времени всего). Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #48 : Апрель 11, 2013, 11:16 »

И это при том, что при компиляции, printf даже не пискнет о невалидных типах, нужно будет 100500 раз запускать и проверять как выводится (неделя времени всего). Улыбающийся
Даже древний gcc 4.2 отсыпает варнинг

Такие "скромные" циклы for, лучше по-возможности избегать, поскольку Вы себя привязываете к конкретному контейнеру. Не у всех у них есть оператор[]. Вот захочется Вам завтра сменить вектор на список или на обычный C массив, тогда и вспомните.. что лучше..
Ну у обычного массива оператор [] есть Улыбающийся С итераторами - да, универсальнее, но и более громоздко

Для человека, готового переписывать 100500 printfов при изменении типа в контейнере - это не аргумент. Улыбающийся
А почему Вы сразу предполагаете какую-то общность и массированное использование? До этого дело доходит относительно редко. Более вероятно что отладочная печать будет убита после того как сыграла свою роль
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #49 : Апрель 11, 2013, 11:20 »

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

Громоздкости никакой нет, если пользоваться новым стандартом.
 
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #50 : Апрель 11, 2013, 14:29 »

Ну у обычного массива оператор [] есть Улыбающийся
Аха, есть.. Зато метода size() нет  Грустный
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.203 секунд. Запросов: 23.