Главная страница
Навигация по странице:

  • Что находится в неинициализированном элементе массива

  • Можно ли объединять массивы

  • Зачем создавать связанный список, если можно использовать массив

  • Зачем использовать встроенные массивы, если класс массива работает лучше Применение встроенных массивов проще и быстрее. Должен ли класс String использовать указатель

  • , чтобы хранить содер- жимое строки

  • 4. Отладка.

  • Массивы и связные списки. Массивы и связанные списки. В предыдущих главах переменные типа int и char


    Скачать 287.28 Kb.
    Название В предыдущих главах переменные типа int и char
    АнкорМассивы и связные списки
    Дата20.05.2021
    Размер287.28 Kb.
    Формат файлаpdf
    Имя файлаМассивы и связанные списки.pdf
    ТипДокументы
    #207639
    страница4 из 4
    1   2   3   4
    коллекция (collection) – элементы упорядочены и отсортированы в определен- ном порядке;
    набор (set) – ни один из элементов не повторяется;
    словарь (dictionary) – набор соответствующих друг другу пар элементов, в кото- рых значение одного из них можно получить из значения другого;
    разреженный массив (sparse array) – разрешены индексы любой величины, но память занимают только те значения, которые содержатся в массиве; таким об- разом, можно обратиться и к элементу
    SparseArray[5]
    , и к элементу
    SparseArray[200]
    , но память будет выделена только для пятого элемента;
    мешок (bag), или мультимножество, – неупорядоченный набор элементов, до- бавлять и обращаться к которым можно в произвольном порядке.
    Перегрузив оператор индексирования (
    []
    ), можно преобразовать связанный спи- сок в коллекцию. Исключив дублирование элементов, можно преобразовать коллек- цию в набор. Если каждый объект списка имеет пару значений, его можно использо- вать для создания словаря или разреженного массива.
    ???? ???? ??????????? ????? ??????? ? ????????????? ????????? ???*
    ????????, ????????????? ??????????? ???????????? ?????????? ??*
    ?????? ???????, ??? ???????, ??? ?? ???????.
    ??????
    Сегодня рассматривалось создание массивов в языке C++. Массив – это набор строго фиксированного количества однотипных элементов.
    Массивы не проверяют свой размер. Поэтому возможна ситуация, когда элемент записывается за пределами области памяти, выделенной для массива. Обычно это приводит к катастрофе. Массивы начинаются с
    0
    . Частой ошибкой является попытка записи элемента номер n
    в массив из n
    элементов.
    Массивы могут быть одно- или многомерными. В любом случае элементы массива могут быть инициализированы при создании, вне зависимости от того, содержит ли он встроенные типы (такие, как int
    ) или объекты класса, располагающего стандарт- ным конструктором.
    Массивы и их содержимое могут быть размещены как в динамической памяти, так и в стеке. При удалении массивов, размещенных в динамической памяти, не забывай- те использовать квадратные скобки в операторе delete[]
    Имя массива представляет собой постоянный указатель на его первый элемент.
    Указатели и массивы используют арифметические операции над указателями для по- иска необходимого элемента массива.

    388
    ?????? 2. ???????? ???????
    Строки – это разновидность массива символов. Язык C++ обладает специальны- ми средствами для работы с символьными массивами, включая возможность инициа- лизировать их с помощью строки, заключенной в парные кавычки.
    ??????? ? ??????
    Что находится в неинициализированном элементе массива?
    Любое значение, находившееся в этой области памяти ранее. Результаты ис- пользования неинициализированного элемента непредсказуемы. Если компиля- тор соответствует стандарту C++, то элементы массива, не являющиеся стати- ческими или локальными объектами, будут инициализированы нулем.
    Можно ли объединять массивы?
    Да. Чтобы объединить массивы, необходимо использовать указатели. Объеди- нять строки еще проще: для них можно использовать встроенные функции, на- пример, strcat()
    Зачем создавать связанный список, если можно использовать массив?
    Массив имеет фиксированный размер, в то время как связанный список спосо- бен динамически изменять свой размер в процессе выполнения программы.
    Более подробная информация о связанных списках приведена в приложении Д,
    “Связанные списки”.
    Зачем использовать встроенные массивы, если класс массива работает лучше?
    Применение встроенных массивов проще и быстрее.
    Должен ли класс
    String
    использовать указатель
    char *
    , чтобы хранить содер-
    жимое строки?
    Нет. Для хранения можно использовать любой тип памяти. Выбирать нужно тот, который подходит наиболее.
    ??????????
    В этом разделе предлагаются вопросы для самоконтроля и закрепления получен- ных знаний, а также упражнения, которые помогут применить изученное на практи- ке. Попытайтесь самостоятельно ответить на вопросы и выполнить все задания и только потом сверьте полученные результаты с ответами в приложении Г, “Ответы”.
    Не приступайте к изучению материала следующей главы, если остались неясными хо- тя бы некоторые из предложенных ниже вопросов.
    ??????????? ???????
    1. Какой из элементов массива
    SomeArray[25]
    будет первым, а какой – последним?
    2. Как объявить многомерный массив?
    3. Инициализируйте элементы массива из вопроса 2.
    4. Сколько элементов содержит массив
    SomeArray[10][5][20]
    ?
    5. Чем связанный список отличается от массива?
    6. Сколько символов хранится в строке “
    Jesse knows C++
    ”?
    7. Каким будет последний символ в строке “
    Brad is a nice guy
    ”?

    ???? 13. ??????? ? ????????? ??????
    389
    ??????????
    1. Объявите двумерный массив, представляющий поле для игры в крестики-нолики.
    2. Напишите код, инициализирующий значением
    0
    все элементы массива упраж- нения 1.
    3. Напишите программу, которая содержит четыре массива. Три первых массива должны содержать имена, инициалы и фамилии. Используя изученную на сего- дняшнем уроке функцию копирования строк, организуйте конкатенацию и ко- пирование их строк в четвертый массив, содержащий полные имена.
    4. Отладка. Найдите ошибку в следующем фрагменте кода:
    unsigned short SomeArray[5][4];
    for (int i=0; i<4; i++)
    for (int j=0; j<5; j++)
    SomeArray[i][j] = i+j;
    5. Отладка. Найдите ошибку в следующем фрагменте кода:
    unsigned short SomeArray[5][4];
    for (int i=0; i<=5; i++)
    for (int j=0; j<=4; j++)
    SomeArray[i][j] = 0;
    1   2   3   4


    написать администратору сайта