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>