2014-10-11 3 views
2

Я действительно не понимаю, когда вам нужно будет использовать векторы. Спасибо, пожалуйста, дайте мне пример того, когда вы решите использовать вектор вместо массива.Когда использовать вектор вместо массива?

+0

Попробуйте написать безошибочный безопасный код для работы с массивами C-стиля с динамическим размером, которые создаются, возвращаются и передаются между различными функциями, которые не знают друг о друге. Создавайте копии массивов и вставляйте/удаляйте элементы в случайных положениях. Затем попробуйте написать тот же код, используя 'std :: vector'. Если у вас нет времени для этого: взгляните на [этот очень похожий вопрос] (https://stackoverflow.com/questions/16046823/array-of-int-or-vector). – 5gon12eder

ответ

2

Основным преимуществом является распределение динамической памяти. Вектор начинается с ограниченного размера и удваивает его размер, когда требуется больше места. Средняя сложность вставки по-прежнему равна O (1), что является основным преимуществом здесь. Тем не менее, он все еще немного медленнее, чем массивы.

Кроме этого, все, что вы делаете с вектором, может быть выполнено с помощью массивов. Однако векторы проще в использовании, поскольку они могут иметь итераторы и причудливые конструкторы и функции.

1

Массивы фиксированного размера. Когда вы выделяете массив, он содержит n элементов. Если вам нужно добавить элемент (n + 1) th, вам нужно выделить новый массив, скопировать все старые элементы и затем добавить (n + 1) -й элемент. Используя вектор, все это заботится о вас. Вектор сохраняет массив как хранилище и отслеживает, сколько элементов присутствует. Если массив, поддерживающий вектор, пробегает пробел, вектор должен выделять новый более крупный массив, копировать по старым элементам и затем добавлять один элемент. Но это уже реализовано для вас, и вам не нужно переопределять его каждый раз, когда вам нужен массив, который растет.

Существуют также преимущества абстракции при создании более сложных структур данных. Вектор - это класс, а массив - нет.

Смежные вопросы