|
245 / 246 / 38
Регистрация: 08.04.2013
Сообщений: 927
|
|||||||||||
Критику в студию25.04.2013, 23:39. Показов 6308. Ответов 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
|
|
|
5499 / 4894 / 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 ? На критику Надеюсь на критику Можно услышать критику Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|