|
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|||||||||||
Критику в студию25.04.2013, 23:39. Показов 6325. Ответов 30
Метки нет (Все метки)
Доброго всем времени суток! Я вот написал такой себе класс матриц, прошу оценить его и посоветовать что можно улучшить или изменить, как повысить быстродействие или, возможно, что-то надо добавить.
Знаю,что надо сделать шаблон класса для разных типов данных, но дабы сейчас все было красиво и хорошо не загрязнял этим код! Любые дельные советы будут "лайкнуты"! matrix.h
1
|
|||||||||||
| 25.04.2013, 23:39 | |
|
Ответы с готовыми решениями:
30
из Борланда в Студию Тестовое задание от работадателя. Хотелось бы услышать критику. Как войти в Visual студию? |
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 25.04.2013, 23:54 | |
|
metaluga145, Красавец! Мне нечего добавить. Все правильно сделал.
Я могу только мелочь подсказать от ты когда создаешь заголовочный файл нужно обязательно, то что в нем записано записывать между #ifndef #define и #endif , это что бы случайно повторного включения не было. По коду конечно притензий нету. От еще Страуструп советует типо в классе при перегрузке операторов которые не изменяют как бы класс ну от у тебя + - * и.т.п. не изменяют собственный класс, как бы их нужно определять глобально, а отакие +=, *= и.т.п. как бы членами класса делать. Ну это он так как бы советует делать. Ну это не сильно важно. Вообщем мне понравилось молодчага.
0
|
|
| 26.04.2013, 00:27 | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 26.04.2013, 00:27 | |
|
Два одинаковых кода: вывод матрицы на экран и вывод в файл, напрашивается заменить одним. В зависимости от потока, будет вывод или на экран, или в файл.
0
|
|
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||||
| 26.04.2013, 01:35 | ||||||||
Добавлено через 1 минуту И для чего Вам нужен виртуальный деструктор?
1
|
||||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||||||||||
| 26.04.2013, 03:36 | ||||||||||||||
|
Не увидел оператора присваиваний.
В нескольких местах не помешало бы поставить Enter, хоть скроллбар убрать (я вообще считаю, что код должен иметь ширину не более 80 символов) ![]()
Комменты желательно подтянуть на один уровень отступов, просто для ++читаемость. Сделать конст методы там, где нужно. Это по заданию нужно извращаться с хранением матрицы внутри одномерного массива?
0
|
||||||||||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||
| 26.04.2013, 04:47 | |||||||
|
1. Класс так и просится стать шаблонным.
2. Не вижу необходимости использовать сишные массивы, можно спокойно использовать std::vector. 3. 4. 5. Было бы неплохо добавить move-конструктор. 6. 7. 8. 9. Метод zero туда же. 10. Операторы посмотрел очень бегло. То, что должны быть константными - уже сказали. Сходу не увидел проверок на выход за границы массивов. 11. 12. Методы вывода также вынести из класса. 13. "SetPrecison" также не нужен в классе.
2
|
|||||||
|
Неэпический
|
||||||||||||||||
| 26.04.2013, 10:09 | ||||||||||||||||
|
имхо, класс не должен содержать методов вывода. Лучше уж перегрузить <<. Да и сам класс лучше сделать шаблонным.
Добавлено через 2 минуты Так же, если есть операторы "+", "-" и другие, то сделайте и оператор "+=" Добавлено через 1 минуту
Добавлено через 43 секунды Так же не видно индексации Добавлено через 2 минуты
+ может мне не нужно её обнулять? + может мне нужна матрица такого же размера или меньше?
0
|
||||||||||||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 26.04.2013, 12:40 | |
|
При умножении/сложении/вычитании матриц нет проверки на согласованность размеров матриц.
Поля, объявленные protected надо бы сделать private. Потроха сделать на базе std::vector. А еще непонятно зачем имитация двумерности на базе одномерного массива.
0
|
|
|
Higher
|
|||
| 26.04.2013, 13:17 | |||
|
0
|
|||
|
|
||||||
| 26.04.2013, 13:18 | ||||||
|
Передавать POD типы по const ссылке незачем, передавай по значению.
Интерфейс класса
1
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||
| 26.04.2013, 14:03 | |||
|
Добавлено через 1 минуту
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 26.04.2013, 14:23 | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||
| 26.04.2013, 14:25 | ||
|
Tulosba, В данном случае уместнее будет сказать скалярные.
1
|
||
| 26.04.2013, 14:38 | |
|
Не по теме: Да, точно, заглянул в стандарт, к POD еще структуры, юнионы и массивы скалярных типов относятся.
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 26.04.2013, 14:51 | |
|
0
|
|
| 26.04.2013, 14:56 | |
|
Не по теме: Kastaneda, и тривиальные классы, если говорить о С++11
0
|
|
|
Higher
|
||||
| 26.04.2013, 15:03 | ||||
Сообщение было отмечено как решение
РешениеА вот кеш для линейного массива работает значительно лучше. Учитывая то, что доступ к памяти - наиболее времязатратная операция, получаем значительный выигрыш. Ну и еще векторизация и префетчинг для линейного массива делается гораздо проще, чем для массива указателей. А это тоже достаточно неслабое ускорение. В качестве бонуса, менеджер памяти гораздо быстрее поймет, что данная матрица является одним большим объектом, а не кучкой мелких. Это благотворно повлияет на общий перформанс. Ну и еще потребуется чуть-чуть меньше памяти (не понадобится хранить массив указателей). Итого: получаем более бережное обращение с памятью и кешем в частности, что может дать очень даже неслабое ускорение (в некоторых случаях - в десятки раз).
5
|
||||
|
|
|
| 26.04.2013, 15:05 | |
|
metaluga145, а где в классе перегруженые операторы [][]? Это же важная штука для матрицы.
0
|
|
| 26.04.2013, 15:05 | |
|
Помогаю со студенческими работами здесь
20
Где взять STLPort под 13 студию? Как студию подружить со статической библиотекой скопилированой в MinGW ? На критику Надеюсь на критику Можно услышать критику Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|