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

  • Контейнерные классы

  • Результат выполнения программы: 100 200 200 1 2 3 4 5 0 0 0 0 0 100

  • Курс ООП в С презентация. ООП в с++(полный курс). Объекты и классы


    Скачать 1.76 Mb.
    НазваниеОбъекты и классы
    АнкорКурс ООП в С презентация
    Дата21.02.2022
    Размер1.76 Mb.
    Формат файлаppt
    Имя файлаООП в с++(полный курс).ppt
    ТипДокументы
    #368655
    страница21 из 26
    1   ...   18   19   20   21   22   23   24   25   26

    Контейнерные классы


    Использование последовательных контейнеров
    К основным последовательным контейнерам относятся:
    Контейнер вектор (vector), является аналогом обычного массива, за исключением того, что он автоматически выделяет и освобождает память по мере необходимости. Контейнер эффективно обрабатывает произвольную выборку элементов с помощью операции индексации [] или метода at. Однако вставка элемента в любую позицию, кроме конца вектора, неэффективна. Для этого потребуется сдвинуть все последующие элементы путем копирования их значений. По этой же причине неэффективным является удаление любого элемента, кроме последнего.
    Контейнер список (list) организует хранение объектов в виде двусвязного списка. Каждый элемент списка содержит три поля: значение элемента, указатель на предшествующий и указатель на последующий элементы списка. Вставка и удаление работают эффективно для любой позиции элемента в списке. Однако список не поддерживает произвольного доступа к своим элементам: например, для выборки n-го элемента нужно последовательно выбрать предыдущие n-1 элементов.
    Контейнер двусторонняя очередь (deque) во многом аналогичен вектору, элементы хранятся в непрерывной области памяти. Но в отличие от вектора двусторонняя очередь эффективно поддерживает вставку и удаление первого элемента (так же, как и последнего).

    Контейнерные классы


    Существует пять способов определить объект для последовательного контейнера.
      Создать пустой контейнер:

      vector VI; list LD;

      Создать контейнер заданного размера и инициализировать его элементы значениями по умолчанию:

      vector VI(100); //создаем вектор из 100 элементов
      list LD(20); //создаем список из 20 элементов

      Создать контейнер заданного размера и инициализировать его элементы указанным значением:

      //создаем вектор из 100 элементов и инициализируем их нулями:
      vector VI(100, 0);
      //создаем очередь из 300 элементов и инициализируем их нулями:
      deque DF(300, 0.0);

    Контейнерные классы


      Создать контейнер и инициализировать его элементы значениями диапазона(first, last) элементов другого контейнера:

      //создаем и инициализируем массив из 7 элементов
      int array[7] = (15, 2, 19, -3, 28, 6, 8);
      //создаем вектор и инициализируем его элементами массива,
      //array – указатель на первый элемент массива
      vector VI(array, array + 7);
      //создаем список и инициализируем его элементами вектора,
      //VI.begin() – метод, который возвращает указатель на
      //первый элемент массива, VI.end() – возвращает указатель
      //на фиктивный элемент, следующий за последним
      list LI(VI.begin() + 2, VI.end());

      Создать контейнер и инициализировать его элементы значениями элементов другого однотипного контейнера:
      //создаем и инициализируем элементы нулями:
      vector V1(100,0);
      //создаем и инициализируем элементами вектора v1:
      vector V2(V1);

    Контейнерные классы


    ВЕКТОР для item! И работа с ним.
    Метод insert имеет следующие реализации:
      iterator insert(iterator pos, const T& key); – вставляет элемент key в позицию, на которую указывает итератор pos, возвращает итератор на вставленный элемент;
      void insert(iterator pos, size_type n, const T& key); – вставляет n элементов key, начиная с позиции, на которую указывает итератор pos;
      template
      void insert(iterator pos, InputIter first, InputIter last); вставляет элементы диапазона first…last, начиная с позиции, накоторую указывает итератор pos.

    Контейнерные классы


    void main()
    {
    vector v1(5, 0);
    int m[5] = {1, 2, 3, 4, 5};
    //добавили один элемент со значением 100 в начало вектора:
    v1.insert(v1.begin(), 100);
    // добавили два элемента со значениями 200 в начало вектора:
    v1.insert(v1.begin()+1, 2, 200);
    // добавили пять элементов со значениями из массива m в вектор, // начиная с третьего:
    v1.insert(v1.begin()+3, m, m+5);
    //добавили один элемент со значением 100 в конец вектора:
    v1.insert(v1.end(), 100);
    //печать вектора
    for(int i=0; i cout << v1[i] << " ";
    }
    Результат выполнения программы:
    100 200 200 1 2 3 4 5 0 0 0 0 0 100

    1   ...   18   19   20   21   22   23   24   25   26


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