Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Arxans
0 / 0 / 1
Регистрация: 24.10.2015
Сообщений: 48
Завершенные тесты: 2
1

Реализую свой Вектор

06.02.2019, 19:23. Просмотров 1696. Ответов 5

Всех приветствую!)
Подскажите пожалуйста, какие поля нужно создать в классе(что именно нам нужно хранить) для реализации Мини Вектора.
Мини Вектор - вектор с методами push_back(), pop_back(), insert(), erase(), size(), emty().
Насколько я понимаю вектор основан на динамическом массиве, но тогда мне не ясно как реализовать добавление элемента в конец (push_back) за O(1).

Буду благодарен любой помощи!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 19:23
Ответы с готовыми решениями:

Свой класс вектор. Как расширить динамический массив
#include <iostream> using namespace std; template<typename T> class Vector { private: int...

Реализую класс очередь с использованием двух стеков.ошибка итератор dequee is not dereferanceble
Реализую класс очередь с использованием двух стеков. Вот, все получается, только pop плохо...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют...

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный...

Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.
Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n...

5
Pashka Durov
134 / 85 / 32
Регистрация: 30.01.2018
Сообщений: 443
06.02.2019, 19:31 2
https://youtu.be/SajrPhE6FoQ
Суть поймешь
1
Croessmah
++Ͻ
15816 / 8951 / 1719
Регистрация: 27.09.2012
Сообщений: 21,992
Записей в блоге: 2
Завершенные тесты: 2
06.02.2019, 19:50 3
Лучший ответ Сообщение было отмечено Arxans как решение

Решение

Цитата Сообщение от Arxans Посмотреть сообщение
но тогда мне не ясно как реализовать добавление элемента в конец (push_back) за O(1)
Выделять памяти с запасом. Тогда можно добиться вставки в конец за амортизированное O(1).
1
Arxans
0 / 0 / 1
Регистрация: 24.10.2015
Сообщений: 48
Завершенные тесты: 2
06.02.2019, 22:39  [ТС] 4
А если мне в один из случаев нужно будет очень много элементов добавить, то выходит мне всегда нужно выделять дохрена памяти под любой вектор?
0
DrOffset
10915 / 5814 / 1432
Регистрация: 30.01.2014
Сообщений: 9,356
06.02.2019, 23:02 5
Лучший ответ Сообщение было отмечено Arxans как решение

Решение

Arxans, для этого нужна функция reserve, которая предвыделит нужное кол-во памяти без лишнего.
Увеличение с запасом следует использовать только при последовательном выделении памяти по запросу функции push_back (и только том случае, если ее не хватает). Таким образом, при наличии сделанного заранее reserve под большое число элементов, push_back больше не будет требовать памяти до тех пор, пока она не закончится. Стандартный вектор работает именно таким образом.
1
Arxans
0 / 0 / 1
Регистрация: 24.10.2015
Сообщений: 48
Завершенные тесты: 2
07.02.2019, 03:14  [ТС] 6
Вот, нашел отличный сайт, может кому-то пригодится!
http://artlang.net/post/vector-c++-effektivno/

Всем, кто ответил, огромное спасибо
0
07.02.2019, 03:14
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2019, 03:14

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста?
#include <iostream> #include <iomanip> #include <cstdlib> #include <ctime> using namespace...

Почему матрица на вектор умножается быстрее чем вектор на матрицу?
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы
Помогите не знаю как сделать! Создать иерархию классов вектор(longint) и безопасный вектор с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.