2070 / C++ / Списки

 

Черга Стек
Дерево Vector
Список head, tail, size Двобічно зв'язаний список
Список, що приймає різні типи даних

 

 

#include <list> // STL двозв'язний

list<int> list1; // пустий
list<int> list2(5); // онулений список з 5 чисел
list<int> list3(5, 2); // список з 5 чисел, які дорівнюють 2-м
list<int> list4{ 1, 2, 3 }; // список з чисел 1, 2, 3
list<int> list5 = { 2, 3, 4 }; // список з чисел 2, 3, 4
list<int> list7 = list5; // список list7 - копия list5
list<int> list6(list5); // список list6 - копія list5
list<int> numbers = { 3, 5, 7, 9, 11, 13 };
int size = numbers.size(); // 6
int first = numbers.front(); // 3
int last = numbers.back(); // 13
bool b = numbers.empty(); // false

for (int n : numbers){
  cout << n << " ";
}
// через ітератори, для numbers.erase(it)
for (auto it = numbers.begin(); it != numbers.end(); it++)
{
  cout << *it << " ";
}

numbers.resize(3); // урізіти до 3 елементів
numbers.resize(5, 7) // урізіти до 6 елементів, нові елементи заповнити 7-ми
numbers.assign({ 10, 20, 30, 40, 50 }); // замінти на
numbers.assign({ 5, 5 }); // замінти на 5-ки
auto start = ++values.begin(); // ітератор вказує на другий елемнт
auto end = --values.end(); // ітератор вказує на передостанній елемент
numbers.assign(start, end); // урізати
list1.swap(list2); // обміняти посилання на сиписки елементів

Додавання

 
numbers.push_back(a) - додати в кінець списку
numbers.push_front(a) - додати в початок списку
numbers.emplace_back(a) - додати в кінець списку
numbers.emplace_front(a) - додати в початок списку
numbers.emplace(pos, a) - вставляє елемент на позицію, на яку вказує ітератор pos.
Повертає ітератор на доданий елемент
numbers.insert(pos, a) - вставляє елемент на позицію, на яку вказує ітератор pos.
Повертає ітератор на доданий елемент
numbers.insert(pos, n, a) - вставляє n елементів val починаючи з позиції, на яку вказує ітератор pos. Повертає ітератор на перший доданий елемент. Якщо n = 0, то повертається ітератор pos.
numbers.insert(pos, begin, end) - вставляє починаючи з позиції, на яку вказує ітератор pos, елементи з іншого контейнера з діапазону між ітераторами begin і end. Повертає ітератор на перший доданий елемент. Якщо між ітераторами begin і end немає елементів, то повертається ітератор pos.
numbers.insert(pos, values) - вставляє список значень ​​починаючи з позиції, на яку вказує ітератор pos. Повертає ітератор на перший доданий елемент.
Якщо values ​​не містить елементів, то повертається итератор pos.

Видалення

 
numbers.clear() - видаляє всі елементи; clear(p)
numbers.pop_back() - видаляє останній елемент
numbers.pop_front() - видаляє перший елемент
numbers.erase(p) - видаляє елемент, на який вказує ітератор p. Повертає ітератор на елемент, наступний після видаленого, або на кінець контейнера, якщо видалений елемент був останнім
numbers.erase(begin, end) - видаляє елементи з діапазону, на початок і кінець якого вказують ітератори begin і end. Повертає ітератор на елемент, наступний після останнього видаленого, або на кінець контейнера, якщо видалений останній елемент.

Сортування

 
bool F1(const Student& first, const Student& second)
{
  if (first.salary > second.salary)
  {
    return true;
  }
  else
  {
    return false;
  }
}

list.sort(F1);