|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|||||||||||
Реализация классов вектор и строка18.05.2012, 20:37. Показов 15650. Ответов 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 (явная реализация методов базовых абстрактных классов)
Как заполнить вектор на вектор классов Реализация классов-наследников или классов-родителей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|