Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 семестр / Вопросы к экзамену. Моё.docx
Скачиваний:
5
Добавлен:
16.07.2023
Размер:
58.39 Кб
Скачать

Int main() {

int n,x,sum;

list <int> A;

list <int>::iterator it;

cin>>n;

for(int i=0;i<n;i++) {

cin>>x;

A.push_back(x);

}

for(it=A.begin();it!=A.end();it++) {

sum=sum+(*it);

}

cout<<"sum="<<sum;

return 0;

}

24. Стандартная библиотека шаблонов. Последовательные контейнеры. Примеры list.

См вопрос 23.

25. Общие свойства контейнеров, набор основных операций для работы с контейнерами, примеры.

Ключевая идея стандартных контейнеров заключается в том, что они должны быть взаимозаменяемыми, если это разумно для решения задачи.

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

1. insert(p, x)

Добавление x перед элементом, на который указывает p-итератор

2. insert(p, n, x) Добавление n копий x перед p

3. insert(p, first, last)

Добавление элементов из диапазона [first:last] перед p

4. push_back(x)

Добавление х в конец контейнера

5. push_front(x)

Добавление нового первого элемента (только для списков и очередей с двумя

концами

6. pop_back()

удаление последнего элемента

7. pop_front()

Удаление первого элемента (только для списков и очередей с двумя концами)

8. erase(p)

Удаление элемента в позиции p

9. erase(first, last)

Удаление элемента из диапазона [first:last]

10. clear()

Удаление всех элементов

Пример нахождения суммы элементов вектора:

#include <math.h>

#include <iostream>

#include <vector>

using namespace std;

int main(void) {

int n, x, sum=0;

vector <int> A;

vector <int>::iterator it;

cin >> n;

for (int i = 0;i < n;i++) {

cin >> x; A.push_back(x);

}

for (it = A.begin();it != A.end();it++) {

sum = sum + (*it);

}

cout << "sum=" << sum;

return 0;

}

26. Функция печати содержимого контейнера.

Контейнер — это класс STL, реализующий функциональность некоторой структуры данных, то есть хранилища нескольких элементов. Примеры разных контейнеров: vector, stack, queue, deque, string, set, map и т.д.

template <class T>

void print(T & A) {

typename T:: iterator it;

for(it=A.begin();it!=A.end();it++) {

cout<<*it<<” ”;

}

}

27. Контейнеры, итераторы. Доступ к элементам контейнера с помощью итераторов.

Контейнер — это класс STL, реализующий функциональность некоторой структуры данных, то есть хранилища нескольких элементов. Примеры разных контейнеров: vector, stack, queue, deque, string, set, map и т.д.

Контейнеры последовательности реализуют структуры данных, к которым можно обращаться последовательно.

массив: статический непрерывный массив (шаблон класса)

вектор: динамический непрерывный массив (шаблон класса)

deque: Двусторонняя очередь (шаблон класса)

forward_list: односвязный список (шаблон класса)

список: двусвязный список (шаблон класса)

Итератор — это такая структура данных, которая используется для обращения к определенному элементу в контейнерах STL. Обычно из используют с контейнерамиset, list , а у вектора для этого применяют индексы.

При использовании контейнеров и алгоритмов, работающих с ними, используются итераторы – интерфейсы для взаимодействия с элементами контейнера. Каждому элементу контейнера ставится в соответствие свой итератор.

Для создания итератора мы должны с самого начала программы подключить библиотеку <iterator>.

У каждого контейнера имеются два метода, которые, как указатели передают итератору начало или конец контейнера — begin() и end().

int n, x;

vector <int> A;

vector <int>::iterator it;

cin >> n;

for (int i = 0;i < n;i++) {

cin >> x;

A.push_back(x);

}

for (it = A.begin();it != A.end();it++) //доступ к элементам контейнера при

помощи функций begin(), end() и оператора ++ {

cout << *it << " ";

}

28. Алгоритмы STL. Примеры для некоторых алгоритмов (любые).

Алгоритмы – процедуры для обработки элементов контейнеров.

Чтобы использовать любой из алгоритмов STL, просто включите заголовочный файл algorithm.

#include <algorithm>

#include <iostream>

#include <list>

#include <numeric>