Подтвердить что ты не робот

С# эквивалент С++-вектора с непрерывной памятью?

Что такое эквивалент С# для вектора С++?

Я ищу эту функцию:

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

Я искал и сказал .NET equivalent to the vector in C++ is the ArrayList, поэтому:

У ArrayList есть эта непрерывная функция памяти?

4b9b3361

Ответ 1

Вы можете использовать List<T>, а когда T - тип значения, он будет выделен в непрерывной памяти, которая не была бы если T является ссылочным типом.

Пример:

List<int> integers = new List<int>();
integers.Add(1);
integers.Add(4);
integers.Add(7);

int someElement = integers[1];

Ответ 2

используйте List<T>. Внутри он использует массивы, а массивы используют непрерывную память.

Ответ 3

С# имеет много ссылочных типов. Даже если контейнер хранит ссылки смежно, сами объекты могут быть разбросаны через кучу

Ответ 4

Прежде всего, держитесь подальше от Arraylist или Hashtable. Эти классы следует считать устаревшими в пользу дженериков. Они все еще находятся в языке для устаревших целей.

Теперь вы ищете класс List<T>. Обратите внимание: если T является типом значения, вы будете иметь память contiguos, но не если T является ссылочным типом по понятным причинам.