STL Числовые пределы

Содержание

Слайд 2

Числовые пределы Для того чтобы узнать числовые пределы в С++ используется

Числовые пределы

Для того чтобы узнать числовые пределы в С++ используется шаблонный

класс numeric_limits, который находится в заголовочном файле

int main()
{
std::cout << "type\tlowest\thighest\n";
std::cout << "int\t"
<< std::numeric_limits::lowest() << '\t'
<< std::numeric_limits::max() << '\n';
std::cout << "float\t"
<< std::numeric_limits::lowest() << '\t'
<< std::numeric_limits::max() << '\n';
std::cout << "double\t"
<< std::numeric_limits::lowest() << '\t'
<< std::numeric_limits::max() << '\n';
}

Слайд 3

public-поля и методы numeric_limits http://en.cppreference.com/w/cpp/types/numeric_limits

public-поля и методы numeric_limits

http://en.cppreference.com/w/cpp/types/numeric_limits

Слайд 4

Компоненты STL Контейнеры – предназначены для управления коллекциями объектов определенного типа.

Компоненты STL

Контейнеры – предназначены для управления коллекциями объектов определенного типа. У

каждой разновидности контейнера свои достоинства и недостатки.
Итераторы – предназначены для перебора элементов в контейнерах. Предоставляют стандартный интерфейс для любого типа контейнера.
Алгоритмы – предназначены для обработки коллекций. Например, поиск, сортировка, модификация и т.д.
Слайд 5

Концепция STL Алгоритм Контейнер Итератор

Концепция STL

Алгоритм

Контейнер

Итератор

Слайд 6

Требования к хранимым объектам copy – constructable assignable «Стандартная семантика»

Требования к хранимым объектам

copy – constructable
assignable
«Стандартная семантика»

Слайд 7

Категории контейнеров Последовательные Ассоциативные Неупорядоченные ассоциативные Адаптеры контейнеров

Категории контейнеров

Последовательные
Ассоциативные
Неупорядоченные ассоциативные
Адаптеры контейнеров

Слайд 8

Общие методы контейнеров Конструктор по умолчанию, конструктор копирования, оператор присваивания, деструктор

Общие методы контейнеров

Конструктор по умолчанию, конструктор копирования, оператор присваивания, деструктор
begin(), end()
Операторы

сравнения: ==, !=, >, >=, <, <=
size()
empty()
swap(obj2)
Слайд 9

Общие типы контейнеров С::value_type C::reference C::const_reference C::pointer C::iterator C::const_iterator C::size_type

Общие типы контейнеров

С::value_type
C::reference
C::const_reference
C::pointer
C::iterator
C::const_iterator
C::size_type

Слайд 10

Последовательные контейнеры Статический массив (array) Вектор (vector) Дека (deque) Односвязный список (forward_list) Двусвязный список (list)

Последовательные контейнеры

Статический массив (array)
Вектор (vector)
Дека (deque)
Односвязный список (forward_list)
Двусвязный список (list)

Слайд 11

Общие члены последовательных контейнеров Конструктор от 2 итераторов Конструктор от count

Общие члены последовательных контейнеров

Конструктор от 2 итераторов
Конструктор от count и defVal
Двухитераторный

erase
push_back, pop_back, back
front
assign от двух итераторов
assign от count и val
insert от итератора и val
insert от итератора, n и val
insert от трех итераторов
Слайд 12

vector С – подобный динамический массив произвольного доступа с автоматическим изменением

vector

С – подобный динамический массив произвольного доступа с автоматическим изменением размера

при добавлении элементов
operator[], at
resize
capacity, reserve
http://en.cppreference.com/w/cpp/container/vector
Слайд 13

array Array – контейнер, являющийся оберткой над обычным массивом фиксированного размера. http://en.cppreference.com/w/cpp/container/array deque http://en.cppreference.com/w/cpp/container/deque

array

Array – контейнер, являющийся оберткой над обычным массивом фиксированного размера.
http://en.cppreference.com/w/cpp/container/array

deque

http://en.cppreference.com/w/cpp/container/deque

Слайд 14

forward_list / list http://en.cppreference.com/w/cpp/container/forward_list http://en.cppreference.com/w/cpp/container/list

forward_list / list

http://en.cppreference.com/w/cpp/container/forward_list
http://en.cppreference.com/w/cpp/container/list

Слайд 15

Ассоциативные контейнеры set http://en.cppreference.com/w/cpp/container/set map http://en.cppreference.com/w/cpp/container/map multiset http://en.cppreference.com/w/cpp/container/multiset multimap http://en.cppreference.com/w/cpp/container/multimap

Ассоциативные контейнеры

set http://en.cppreference.com/w/cpp/container/set
map http://en.cppreference.com/w/cpp/container/map
multiset http://en.cppreference.com/w/cpp/container/multiset
multimap http://en.cppreference.com/w/cpp/container/multimap

Слайд 16

Неупорядоченные ассоциативные контейнеры unordered_set http://en.cppreference.com/w/cpp/container/unordered_set unordered_map http://en.cppreference.com/w/cpp/container/unordered_map unordered_multiset http://en.cppreference.com/w/cpp/container/unordered_multiset unordered_multimap http://en.cppreference.com/w/cpp/container/unordered_multimap

Неупорядоченные ассоциативные контейнеры

unordered_set http://en.cppreference.com/w/cpp/container/unordered_set
unordered_map http://en.cppreference.com/w/cpp/container/unordered_map
unordered_multiset http://en.cppreference.com/w/cpp/container/unordered_multiset
unordered_multimap http://en.cppreference.com/w/cpp/container/unordered_multimap

Слайд 17

Контейнеры - адаптеры stack http://en.cppreference.com/w/cpp/container/stack queue http://en.cppreference.com/w/cpp/container/queue priority_queue http://en.cppreference.com/w/cpp/container/priority_queue

Контейнеры - адаптеры

stack http://en.cppreference.com/w/cpp/container/stack
queue http://en.cppreference.com/w/cpp/container/queue
priority_queue http://en.cppreference.com/w/cpp/container/priority_queue

Слайд 18

Итераторы http://en.cppreference.com/w/cpp/iterator #include #include #include int main() { std::vector elements {

Итераторы

http://en.cppreference.com/w/cpp/iterator

#include
#include
#include
int main()
{
std::vector elements { 1, 2, 3,

4, 5 };
//std::forward_list elements { 1, 2, 3, 4, 5 };
/*std::vector::const_iterator*/ auto iter = elements.cbegin();
for(; iter != elements.cend(); ++iter)
std::cout << *iter << ' ';
return 0;
}
Слайд 19

Итераторы #include #include int main() { std::array floats = { 1.f,

Итераторы

#include
#include
int main()
{
std::array floats = { 1.f, 2.f, 0.f,

-1.f, 2.f, 124.f, 2.1f };
std::cout << "size: " << floats.size() << '\n';
decltype (floats)::reverse_iterator insert_iter = floats.rbegin();
while (insert_iter != floats.rend())
{
*insert_iter = -1;
++insert_iter;
}
for(auto each : floats)
std::cout << each << ' ';
}
Слайд 20

Алгоритмы http://en.cppreference.com/w/cpp/algorithm #include #include #include #include #include int main() { srand(1024);

Алгоритмы

http://en.cppreference.com/w/cpp/algorithm

#include
#include
#include
#include
#include
int main()
{
srand(1024);
std::vector v(10);
std::generate(v.begin(), v.end(), []

{ return rand() % 100; });
std::list l;
std::cout << "size: " << l.size() << std::endl;
std::copy(v.begin(), v.end(), std::back_inserter(l));
std::copy(l.crbegin(), l.crend(), std::ostream_iterator(std::cout, " "));
std::cout << '\n';
}