Динамические массивы

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002107.docx

Динамические массивы

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

Альтернативой массиву в этом случае является динамический мас- сив. Динамический массив определен как класс ArrayList в пространст- ве имен System.Collections.

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

Поле объекта: Count – количество элементов в массиве Методы объекта для добавления элементов в массив: Add (значение) // добавление элемента в конец массива

AddRange (массив) // добавление массива в конец массива

Insert (номер позиции, значение) //добавление элемента в задан- ную позицию

InsertRange (номер позиции, массив) // добавление массива с за- данной позиции

Методы объекта для удаления элементов из массива:

Remove (значение) RemoveAt (номер позиции)

RemoveRange (номер позиции, количествово элементов) Clear () // удаление всех элементов

Пример:

ArrayList_a; int[] b,c;

b=new int[]{10, 20}; c=new int[100];

a=new ArrayList();                                        a              Count


пусто            0

a.Add(5);                                                             5              1

a.Insert(0,77); // в позицию 0 значение 77                              2

7	7 5	10	20

a.AddRange(b);                                                                     4

a.CopyTo(1,c,0,3);                                                        4

10	20	77	5	10	20

a.InsertRange(0,b);                                                               6

10	77	5	10	20

a.Remove(20);                                                                      5

10	77	5	20

a.RemoveAt(3);                                                                     4

a.RemoveRange(1,2);                                                            2

 

a.Clear();                                                             пусто            0

 

 

Если действие выполнить невозможно, действие не выполняется. Если выполняемое действие приводит к выходу за границы массива, фик- сируется исключительная ситуация.

Выбор, каким массивом пользоваться, зависит от ситуации. Обычный массив структурно проще, доступ к элементу быстрее, методов больше.

У динамического массива можно без проблем удалять/добавлять элементы, легко изменять размер.

На практике используется сочетание динамического и обычного мас- сивов. Это порождает проблему создания динамического массива на основе обычного и наоборот.

динамический массив(a) обычный массив(b)

a.CopyTo (позиция в дин.мас-ве ,обычный массив, позиция в об.мас-ве, кол-во элементов)

 

 

обычный массив(b) динамический массив(a)

a.AddRange (b) //добавление обычного массива в пустой динамический