|
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
|
|||||||||||
Ошибки в шаблонном классе21.10.2018, 15:17. Показов 758. Ответов 7
Метки нет (Все метки)
Добрый день. Реализовал класс динамического массива. При проверке его работы столкнулся с ошибками, которые мне пока не удаётся исправить. Подскажите, пожалуйста, как их можно исправить?
Вот какие ошибки: Ввожу массив 1 2 3 4 5, выбираю метод удаления элементов вначале. Удаляю два элемента и на выходе получаю 1 2 3, когда планировал, что получу 3 4 5. Функция этого метода:
Код этого метода:
0
|
|||||||||||
| 21.10.2018, 15:17 | |
|
Ответы с готовыми решениями:
7
Параметры в шаблонном классе Итератор в шаблонном классе |
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
| 21.10.2018, 18:07 | |
|
eganator, что делает метод
create?
0
|
|
|
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
|
||||||
| 22.10.2018, 00:50 [ТС] | ||||||
|
nonedark2008, вот мой код. Плюс я ещё перегрузил оператор =, но сюда его не добавил. Пока я его не использую.
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 22.10.2018, 01:33 | |
|
1
|
|
|
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
|
|
| 22.10.2018, 02:42 [ТС] | |
|
DrOffset, спасибо, это исправил, забыл дописать. Но ошибка никуда не пропала, к сожалению.
Добавлено через 2 минуты До исправления этой ошибки не верно выводились элементы после добавления в конец. Сейчас не верно выводятся после добавления в начало. Также не верно удаляются элементы в начале массива.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||
| 22.10.2018, 04:13 | ||||||
|
eganator, в вашем коде много странного. Вы установили такие правила, по которым вам самому очень тяжело играть. Отсюда эти ошибки.
Расскажите чего вы хотели добиться введением целочисленных begin и end? Что за странные размазанные по коду манипуляции с length()?Добавлено через 5 минут Обратите внимание вот на этот цикл:
Добавлено через 5 минут Но вообще, я повторюсь, дело тут в том, что код у вас сложный. Не в смысле, что он сложен в принципе, а в смысле, что его сложность неадекватна решаемой задаче. Ошибки, которые вы сейчас не можете найти, проистекают из этой сложности.
0
|
||||||
|
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
|
|
| 22.10.2018, 08:35 [ТС] | |
|
DrOffset, begin и end показывают, как именно будет расположен массив в зарезервированной области. Так я хотел по крайней мере сделать. Да и алгоритм я думал, так можно ускорить.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|
| 22.10.2018, 13:29 | |
|
eganator, классически, динамический массив реализуется с помощью трех данных-членов:
* указатель на начало выделенной памяти * количество элементов массива в этой памяти * размер выделенной памяти Этого достаточно, чтобы покрыть и нужды в скорости, и в обеспечении базовой функциональности. Насколько я понял, вы хотели бы оставлять "задел" по памяти как в начале, так и в конце выделенной области? Это можно сделать, но вам следует подумать о том, как обезопасить эти операции. Чем больше раз вам потребуется повторить по ходу дела манипуляции вида size + length() / 2 + 1 и т.п., тем более сложным для сопровождения оказывается ваш код. Вы начинаете в нем путаться и делать ошибки. Поэтому первое, что вам надо сделать - это определить такие функции размещения элементов в памяти (с учетом ваших пожеланий о "заделах") которыми просто невозможно неправильно воспользоваться. Любое неправильное использование должно пресекаться либо на этапе компиляции, либо на этапе исполнения (с помощью assert). А вот после того, как вы задекларируете все правила, можно приступать к реализации логики класса с использованием этих функций.
1
|
|
| 22.10.2018, 13:29 | |
|
Помогаю со студенческими работами здесь
8
String в шаблонном классе Ошибка в шаблонном классе
Перегрузка оператора в шаблонном классе Работа с матрицей в шаблонном классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|