|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|||||||||||
Реализация классов вектор и строка18.05.2012, 20:37. Показов 15837. Ответов 37
Метки нет (Все метки)
Для лабораторной работы нужно было написать свою реализацию классов вектор и строка.
Выкладываю что получилось, может, кому пригодится. Кому не лень, пожалуйста, просмотрите код, скажите, что не так сделано, какие есть ошибки, чего не хватает и т.д. mvector
mstring
7
|
|||||||||||
| 18.05.2012, 20:37 | |
|
Ответы с готовыми решениями:
37
Вектор классов. Реализация сортировки не работает Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы |
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
||||
| 12.07.2012, 21:26 [ТС] | ||||
|
std::initializer_list добавлю, ток придется на liveworkspace сразу писать
ещеб неплохо добавить reserve shrink_to_fit emplace emplace_back Добавлено через 3 минуты Добавлено через 7 минут вообще интересный пример, надо будет по изучать. особо в велосипедирование пока не ударялся хотя бы потому что особо не знаю как...
0
|
||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 12.07.2012, 21:33 | |
|
softmob, насколько я помню (когда тестил этот класс), он получился stl-совместимым (скорее всего, только до некоторой степени, подробно не проверял). По крайней мере, std::sort и std::copy с ним работали.
0
|
|
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
||||||
| 13.07.2012, 17:08 [ТС] | ||||||
|
добавил вроде все интерфейсные функции аналогичные std::vector
переделал выделение памяти, теперь резервирование происходит только при добавлении элементов или при использование reserve подправил Rvalue Reference методы, ну и так по мелочи немного подправил
как считаете что здесь неплохо бы изменить?
0
|
||||||
|
|
|||||||
| 13.07.2012, 17:43 | |||||||
Остальное не смотрел.
0
|
|||||||
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
||||||
| 13.07.2012, 18:42 [ТС] | ||||||
|
если исправить оператор переноса конструктор будет корректным...
0
|
||||||
|
|
||||||||||
| 13.07.2012, 19:19 | ||||||||||
|
Добавлено через 7 минут
Добавлено через 12 минут
0
|
||||||||||
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|
| 17.07.2012, 00:21 [ТС] | |
|
Добавлено через 4 минуты Кстати как правильнее разбивать на файлы? В литературе обычно предлагают стандартное разделение на .h + .cpp Однако глянув на реализацию стандартной библиотеке, наблюдаешь в .h реализацию вместо объявлений + фалы без расширения содержащих в gcc инклуды, а в студии код реализации и инклюды зависимых фалов. Как все же лучше и когда что использовать?
0
|
|
|
|
|
| 17.07.2012, 06:26 | |
|
softmob, Все шаблоны должны подключаться(и определения, и реализация), поэтому я их разбиваю на hpp и ipp, а затем подключаю их в отдельный файл. Соответственно, при написании программы подключаю только его.
0
|
|
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|||||||
| 25.08.2012, 20:15 [ТС] | |||||||
|
Добавлено через 1 минуту немного переделал с использованием enable_if
1
|
|||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 25.08.2012, 20:26 | ||||||
|
softmob, Расширение файла вообще не суть. .ipp используется к примеру бустом для переноса реализации шаблонных классов/функций туда, соответствено в .hpp подключается данный .ipp файл.
Добавлено через 2 минуты
0
|
||||||
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|
| 25.08.2012, 20:53 [ТС] | |
|
объявления методов класс брал с http://en.cppreference.com/w/cpp/container/vector
там initializer_list по значению принимают и кстати все примерах которые находил initializer_list тоже используется по значению
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 25.08.2012, 21:03 | |
|
softmob, Да окей. Надо было мне в стандарт посмотреть, прежде чем писать.
Copying an initializer list does not copy the underlying elements.
0
|
|
|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|
| 25.08.2012, 21:31 [ТС] | |
|
чет я так и не разберусь с Rvalue Reference
0
|
|
|
|
|||||||||||
| 25.08.2012, 22:14 | |||||||||||
|
Пытался написать код, объясняющий r-ref, в итоге - запутался сам
![]()
out
Удивило то, что const int& не кастуется в int&&. Из всего остального можно сделать вывод - если хотите, чтобы r-reference переменная продолжила свой путь по функциям именно как r-reference, то передавать ее надо исключительно через std::move.
1
|
|||||||||||
|
|
||||||||||||||||
| 27.08.2012, 07:07 | ||||||||||||||||
|
Дубль 2.
Я несколько заблуждался в использовании в функции, принимающей r-ref, std::move, для последующей передачи аргумента, поскольку он может передаваться не только как r-reference, но и как l-reference.
Ну и касаемо невозможности кастования c-ref в r-ref. Полагаю, все дело в этом
1
|
||||||||||||||||
|
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
|
||||||
| 25.12.2016, 23:10 | ||||||
|
Можно было в принципе через наследование определить:
0
|
||||||
| 25.12.2016, 23:10 | |
|
Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов)
Как заполнить вектор на вектор классов Реализация классов-наследников или классов-родителей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача:
Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге).
Решение:
В модуле объекта документа размещен следующий код:
Процедура. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|