Я действительно не понимаю, когда вам нужно будет использовать векторы. Спасибо, пожалуйста, дайте мне пример того, когда вы решите использовать вектор вместо массива.Когда использовать вектор вместо массива?
ответ
Основным преимуществом является распределение динамической памяти. Вектор начинается с ограниченного размера и удваивает его размер, когда требуется больше места. Средняя сложность вставки по-прежнему равна O (1), что является основным преимуществом здесь. Тем не менее, он все еще немного медленнее, чем массивы.
Кроме этого, все, что вы делаете с вектором, может быть выполнено с помощью массивов. Однако векторы проще в использовании, поскольку они могут иметь итераторы и причудливые конструкторы и функции.
Массивы фиксированного размера. Когда вы выделяете массив, он содержит n элементов. Если вам нужно добавить элемент (n + 1) th, вам нужно выделить новый массив, скопировать все старые элементы и затем добавить (n + 1) -й элемент. Используя вектор, все это заботится о вас. Вектор сохраняет массив как хранилище и отслеживает, сколько элементов присутствует. Если массив, поддерживающий вектор, пробегает пробел, вектор должен выделять новый более крупный массив, копировать по старым элементам и затем добавлять один элемент. Но это уже реализовано для вас, и вам не нужно переопределять его каждый раз, когда вам нужен массив, который растет.
Существуют также преимущества абстракции при создании более сложных структур данных. Вектор - это класс, а массив - нет.
- 1. Когда я должен использовать вектор объектов вместо вектора указателей?
- 2. Когда использовать OOP вместо массивов
- 3. Когда использовать ThreadPoolExecutor вместо NewThread()
- 4. Когда использовать 'функцию' вместо 'fun'?
- 5. Когда использовать атрибуты вместо свойств?
- 6. Когда использовать делегат Вместо интерфейсов
- 7. Когда использовать YAML вместо JSON
- 8. Когда использовать Decimal.Round() вместо Math.Round()?
- 9. Когда использовать индексы вместо полей
- 10. Когда использовать sys.stdout вместо sys.stderr?
- 11. Когда использовать делегирование вместо наследования?
- 12. Когда использовать свойство вместо функций
- 13. Когда использовать snd_pcm_avail вместо snd_pcm_avail_update?
- 14. Когда использовать Box вместо ссылки?
- 15. Когда использовать getInstanceOf вместо конструктора
- 16. Когда использовать таНос вместо New
- 17. Когда использовать класс вместо Dict
- 18. Когда использовать Var вместо функции?
- 19. Когда использовать ListView вместо RecyclerView
- 20. Когда и как использовать вектор ссылок
- 21. Статический вектор массива
- 22. станд :: вектор массива
- 23. Функция возвращает вектор вместо скалярных
- 24. Обработка: рисовать вектор вместо пикселей
- 25. Как использовать указатели для массива вместо скобок
- 26. Javascript зачем использовать NodeList вместо использования массива
- 27. как инициализировать вектор массива
- 28. вектор указателя массива C++
- 29. C++ вектор массива строк?
- 30. Когда я должен использовать вектор <int> :: size_type вместо size_t?
Попробуйте написать безошибочный безопасный код для работы с массивами C-стиля с динамическим размером, которые создаются, возвращаются и передаются между различными функциями, которые не знают друг о друге. Создавайте копии массивов и вставляйте/удаляйте элементы в случайных положениях. Затем попробуйте написать тот же код, используя 'std :: vector'. Если у вас нет времени для этого: взгляните на [этот очень похожий вопрос] (https://stackoverflow.com/questions/16046823/array-of-int-or-vector). – 5gon12eder