|
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
|
|||||||||||
Реализация классов вектор и строка18.05.2012, 20:37. Показов 15551. Ответов 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 (явная реализация методов базовых абстрактных классов)
Как заполнить вектор на вектор классов Реализация классов-наследников или классов-родителей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|