|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|||||||||||
Реализация классов вектор и строка18.05.2012, 20:37. Показов 15585. Ответов 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 (явная реализация методов базовых абстрактных классов)
Как заполнить вектор на вектор классов Реализация классов-наследников или классов-родителей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|