Рубрики

Как вставить элементы в C ++ STL List?

Список обсуждался во многих статьях, но единственная цель этой статьи — охватить все типы вставок, которые можно переносить в контейнере списка, и дать подробное представление об операциях вставки.
Список и многие его функции определены в заголовочном файле «список». Различные функции вставки списка обсуждаются ниже.

Использование assign ()

Функция assign () используется для вставки нескольких элементов в список за одну операцию. «Assign ()» работает следующим образом:

  • Для вставки нескольких элементов одновременно в список.
    синтаксис: list.assign (количество раз, элемент) .
  • Копировать элементы одного списка в другой.
    синтаксис: list.assign (lis2.begin (), lis2.end ())
  • Копировать элементы массива в список.
    синтаксис: list.assign (arr, arr + size).

// C ++ код для демонстрации работы assign ()

  
#include <iostream>
#include <list> // for list operations

using namespace std;

  

int main() 

{

    // объявление списка

    list<int> list1;

    list<int> list2;

    list<int> list3;

      

    // инициализирующий массив

    int arr[10] = { 1, 2, 3, 4 };

      

    // используя assign () для вставки нескольких чисел

    // создает 4 вхождения "2"

    list1.assign(4,2);

      

    // Печать назначенного списка

    cout << "The list after inserting multiple elements is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // используя assign () для копирования элементов списка в другие

    // присваивает 4 вхождения "2"

    list2.assign(list1.begin(),list1.end());

      

    // Печать назначенного списка

    cout << "The list after copying list elements is : ";

    for (list<int>::iterator i=list2.begin(); i!=list2.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // использование assign () для копирования элементов массива в список

    // назначаем элементы массива

    list3.assign(arr,arr+4);

      

    // Печать назначенного списка

    cout << "The list after copying array elements is : ";

    for (list<int>::iterator i=list3.begin(); i!=list3.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      
}

Выход:

The list after inserting multiple elements is : 2 2 2 2 
The list after copying list elements is : 2 2 2 2 
The list after copying array elements is : 1 2 3 4 

Вставка в начале

  • Использование push_front (): push_front () используется для вставки элемента в начало списка. Увеличивает размер списка на 1.
  • Использование emplace_front (): работает аналогично push_front, но значения создаются на месте в передней позиции контейнера, где в push_front сначала создается объект, а затем копируется в контейнер.

// C ++ код для демонстрации работы
// push_front () и emplace_front ()

  
#include <iostream>
#include <list> // for list operations

using namespace std;

  

int main() 

{

    // объявление списка

    list<int> list1;

      

    // используя assign () для вставки нескольких чисел

    // создает 2 вхождения "2"

    list1.assign(2,2);

      

    // использование push_front для вставки элементов в начале

    // вставляет 5 в начале

    list1.push_front(5);

      

    // Печать нового списка

    cout << "The list after inserting elements using push_front is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // используя emplace_front для вставки элементов в начале

    // вставляет 7 в начале

    list1.emplace_front(7);

      

    // Печать нового списка

    cout << "The list after inserting elements using emplace_front is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";    

}

Выход:

The list after inserting elements using push_front is : 5 2 2 
The list after inserting elements using emplace_front is : 7 5 2 2 

Вставка в конце

  • Использование push_back (): push_back () используется для вставки элемента в конец списка. Увеличивает размер списка на 1.
  • Использование emplace_back (): работает аналогично push_back, но значения создаются на месте в задней позиции контейнера, где в push_back сначала создается объект, а затем копируется в контейнер.

// C ++ код для демонстрации работы
// push_back () и emplace_back ()

  
#include <iostream>
#include <list> // for list operations

using namespace std;

  

int main() 

{

    // объявление списка

    list<int> list1;

      

    // используя assign () для вставки нескольких чисел

    // создает 2 вхождения "2"

    list1.assign(2,2);

      

    // использование push_back для вставки элементов в конце

    // вставляем 5 в конце

    list1.push_back(5);

      

    // Печать нового списка

    cout << "The list after inserting elements using push_back is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // используя emplace_back для вставки элементов в конце

    // вставляем 7 в конце

    list1.emplace_back(7);

      

    // Печать нового списка

    cout << "The list after inserting elements using emplace_back is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      
}

Выход:

The list after inserting elements using push_back is : 2 2 5 
The list after inserting elements using emplace_back is : 2 2 5 7 

Вставка в любую позицию

  • Использование insert (pos_iter, ele_num, ele): insert () используется для вставки элементов в любую позицию списка.
  • , Эта функция принимает 3 элемента, позицию, количество элементов для вставки и значение для вставки . Если не указано, количество элементов по умолчанию установлено равным 1.

  • Использование emplace (pos_iter, ele): работает аналогично insert (), но значения создаются на месте в передней позиции контейнера, где в push_front сначала создается объект, а затем копируется в контейнер. И только 1 значение может быть вставлено в 1 раз.

// C ++ код для демонстрации работы
// insert () и emplace ()

  
#include <iostream>
#include <list> // for list operations

using namespace std;

  

int main() 

{

    // объявление списка

    list<int> list1;

      

    // используя assign () для вставки нескольких чисел

    // создает 3 вхождения "2"

    list1.assign(3,2);

      

    // инициализация итератора списка в начале

    list<int>::iterator it = list1.begin();

      

    // итератор для указания на 3-ю позицию

    advance(it,2);

      

    // используя insert для вставки 1 элемента в 3-ю позицию

    // вставляет 5 в 3-ю позицию

    list1.insert(it,5);

      

    // Печать нового списка

    cout << "The list after inserting 1 element using insert() is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // используя insert для вставки 2 элемента в 4 позицию

    // вставляет 2 вхождения из 7 в 4-ю позицию

    list1.insert(it,2,7);

      

    // Печать нового списка

    cout << "The list after inserting multiple elements using insert() is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      

    cout << endl;

      

    // используя emplace для вставки элементов в 6-ю позицию

    // вставляет 8 в 6-ю позицию

    list1.emplace(it,8);

      

    // Печать нового списка

    cout << "The list after inserting elements using emplace() is : ";

    for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)

       cout << *i << " ";

      
}

Выход:

The list after inserting 1 element using insert() is : 2 2 5 2 
The list after inserting multiple elements using insert() is : 2 2 5 7 7 2 
The list after inserting elements using emplace() is : 2 2 5 7 7 8 2 

Эта статья предоставлена Манджитом Сингхом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Как вставить элементы в C ++ STL List?

0.00 (0%) 0 votes