Каковы преимущества массива по сравнению с вектором? [Дубликат]

0

Часто вопросы стиля "домашняя работа" появляются на SO, занимающихся переполнением массива, индексированием, функциями, требующими прохождения размера с массивом и т.д. И т.д.

Каковы преимущества array vs std::vector?

В каких ситуациях лучше использовать array? Кажется, многие проблемы могут быть успешно решены путем изменения int[MAX] на std::vector<int> и почти во всем коде, который рассматривается в этих проблемах, чувствительность к производительности не является проблемой (хотя это может быть преимуществом для array, поэтому, если это так, объясните, пожалуйста)

  • 0
    API низкого уровня часто получают / устанавливают параметры массива, что делает вектор непрактичным для этого случая. Кроме того, распределение стека происходит быстрее, чем распределение кучи.
  • 0
    @RedAlert Для этих API вы можете одинаково хорошо использовать векторы, передав вместо них &vec[0] если arr
Показать ещё 7 комментариев
Теги:
arrays
vector

1 ответ

0

Не так много различий между ними.

По большей части вектор будет делать все, что делает Array, и будет компилироваться относительно относительно.

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

Поэтому в случае, если вы не хотите, чтобы местоположение данных перемещалось, данные массива не будут перемещаться и могут быть тем, что вы хотите.

По-прежнему можно избежать изменения размера вектора, зарезервировав нужную сумму, чтобы он не изменялся, но более безопасный метод заключается в том, чтобы просто наполнить вектор указателями на данные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню