Я изучал всюду в книгах о Dymanic массивах. Я использовал их в STL на C++. Но я до сих пор не понимаю, что такое динамические массивы. Как выполняются операции над динамическими массивами.Как выполняются операции для динамического массива?
ответ
В C++ есть (ну, очень скоро будет!) 4 вида массивов: C-стиль статические массивы, 11 static arrays C++, C++ dynamic vectors и C++ 14 dynamic arrays.
Статические массивы C-стиля и C++ 11 принимают параметр постоянной величины времени компиляции и не могут быть увеличены/сжаты после их инициализации. Динамические векторы C++ могут принимать любое количество элементов времени выполнения при инициализации и впоследствии могут быть увеличены/уменьшены. С предстоящим стандартом C++ 14 также будет std::dynarray
, который заполняет промежуток между существующими контейнерами: во время инициализации он будет принимать количество элементов во время выполнения, но впоследствии не может быть увеличено/сокращено.
Вот некоторые основные случаи использования:
static const int N = 4; // compile-time constant int
int M = 4; // run-time int
int c[N] = { 0, 1, 2, 3 }; // C-style static array: compile-time constant size
std::array<int, N> a = { 0, 1, 2, 3 }; // C++11 static array: compile-time constant size
int rc[M] = { 0, 1, 2, 3 }; // ERROR: M is not a compile-time constant expression
std::array<int, M> ra = { 0, 1, 2, 3 }; // ERROR: M is not a compile-time constant expression
std::vector<int> v { std::begin(a), std::end(a) }; // C++ dynamic vector: runtime size, but can be enlarged afterwards
v.push_back(4); // v enlarged to { 0, 1, 2, 3, 4 } now
v.pop_back(); // v shrunk back to { 0, 1, 2, 3 }
std::dynarray<int> d { std::begin(v), std::end(v) }; // C++14 dynamic array: runtime size, but cannot be enlarged afterwards
Статических массивы (массивы C-типа, std::array
) статическое распределение памяти в стеке. Динамические массивы (std::vector<T>
и std::dynarray<T>
) могут принимать параметр шаблона Allocator. Для std::vector
этот Allocator по умолчанию имеет значение std::allocator<T>
, что делает динамическое управление памятью низкого уровня за кулисами, используя new
. Для память выделяется из неуказанного источника, который может или не может вызвать глобальный operator new
.
Поставляя пользовательский распределитель, можно использовать как std::vector
, так и std::dynarray
для работы с распределением памяти на основе стека, например. используя @HowardHinnant's stack allocator.
- 1. Операции SQL выполняются немедленно?
- 2. Как выполняются операции импорта в plpython?
- 3. Амортизированное время динамического массива
- 4. WorkFlow Обеспечение операции выполняются в порядке
- 5. В MVVM, где выполняются длительные бизнес-операции?
- 6. Почему эти операции NSInvocationOperation не выполняются?
- 7. Держите пагинацию повторяемой, если операции изменений выполняются
- 8. Какие операции выполняются при передаче аргумента методу?
- 9. Выполняются постоянные операции константы во время выполнения?
- 10. Какие операции предварительной обработки выполняются Tesseract OCR?
- 11. JSON схемы для динамического массива
- 12. Создание динамического массива для набора
- 13. динамического выделения массива для массива указателей
- 14. Как использовать jQuery.grep() для динамического фильтрации массива?
- 15. Как эхо php-массива для динамического javascript
- 16. Как реализовать оператор [] для динамического массива?
- 17. имя динамического массива для сортировки
- 18. Конструктор для моего динамического массива
- 19. Как узнать, какие операции CRUD выполняются с помощью приложения java?
- 20. Как узнать, почему операции ввода-вывода не выполняются?
- 21. Искры, некоторые операции выполняются до того, как определено действие?
- 22. Диапазон для цикла для динамического массива?
- 23. Сложность реализации динамического массива стека
- 24. Как обычно выполняются операции ввода-вывода на жестком диске?
- 25. Как изменить размер динамического массива?
- 26. Какова структура памяти динамического массива Delphi динамического массива X?
- 27. Обновление динамического размера динамического массива в Java
- 28. Операции полиморфного массива Haskell
- 29. Динамического измерения массива SAS
- 30. Определение двумерного динамического массива
читать: http://www.cplusplus.com/reference/vector/vector/ –