STL Containers and Iterators Overview
STL Containers and Iterators Overview
2
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
STL Containers and Iterators :
Introduction
3
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Standard Template Library
4
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Collections (Containers)
5
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
6
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
size
capacity
7
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding elements
10 5 8 5 17 5 11 9
size
capacity
8
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding elements
10 5 8 5 17 5 11 9 15
size
capacity
9
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding elements
10 5 8 5 17 5 11 9 15 17
size
capacity
10
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding elements
Capacity extension
10 5 8 5 17 5 11 9 15 17 18
size
capacity
11
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 8 5 17 5 11 9 15 17 18
size
capacity
12
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 8 5 17 5 18 9 15 17 18
size
capacity
13
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 8 5 17 5 18 9 15 17
size
capacity
14
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 8 5 17 5 18 9 15 17
size
capacity
15
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 17 5 17 5 18 9 15 17
size
capacity
16
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 17 5 17 5 18 9 15
size
capacity
17
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 5 17 5 17 5 18 9 15
size
capacity
18
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 5 17 5 18 9 15
size
capacity
19
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 5 17 5 18 9
size
capacity
20
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 9 17 5 18 9
size
capacity
21
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 9 17 5 18
size
capacity
22
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 9 17 18 18
size
capacity
23
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Removing elements
Capacity extension
10 15 17 9 17 18
size
capacity
24
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Operator+=
box1 1 2 3
box2 10 20
25
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Operator+=
box1 1 2 3
box2 10 20
box2 += box1
26
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Operator+=
box1 1 2 3
box2 10 20
box2 += box1
box1 1 2 3
box2 10 20 1 2 3
27
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Operator+
box1 1 2 3
box2 10 20
box2 + box1
New box 10 20 1 2 3
28
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Class wrapping on top of raw array
29
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::vector std::array
std::list
std::deque
std::stack …
std::queue
30
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
31
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterators
32
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
33
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
34
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
35
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
36
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
37
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
38
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
39
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11
40
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Algorithms
41
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
sorting finding
copying
filling
generating …
transforming
42
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
43
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
44
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::vector
45
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
46
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Std::vector
47
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Std::vector
#include <vector>
48
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Constructing std::vector’s
49
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Looping around and printing
50
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Accessing elements
51
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Using the underlying raw array
52
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding and removing stuff
53
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
54
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::array
55
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
56
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Std::array
57
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::array
#include <array>
58
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Constructing std::array’s
59
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding stuff
60
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Looping around and printing
61
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Adding and removing stuff
62
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Accessing elements
63
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Using the underlying raw array
64
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
65
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterators
66
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterators
67
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
68
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
69
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
70
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
71
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
72
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
73
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
74
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
75
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11
76
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
begin() and end() iterators
77
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Uniform traversal of containers
78
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
79
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
80
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Traversing container subsets with
iterators
81
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11 34 2
82
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
83
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
84
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Reverse iterators
85
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
86
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
87
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
88
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
89
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
90
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
91
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
92
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
rend() rbegin()
10 5 8 5 17 5 11
93
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
94
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Comparing iterators of different types
95
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
96
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Constant iterators
97
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11
98
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Regular non const iterators
99
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Const iterator
100
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Constant reverse iterators
101
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Const iterators from const containers
102
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
103
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterator types
104
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Notes to self
105
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
10 5 8 5 17 5 11
106
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11
107
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Input iterators
108
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Output iterators
109
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Bidirectional iterators
110
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Forward iterators
111
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Random access iterators
112
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Contiguous iterators
StackOverflow [Link]
113
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Input iterators Output iterators
Forward iterators
Bidirectional iterators
Contiguous iterators
114
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
115
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::begin(T) & std::end(T)
116
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
117
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
118
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Head to the IDE and show all this off.
119
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
STL, Containers and Iterators :
Summary
120
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Standard Template Library
121
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Collections (Containers)
122
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::vector std::array
std::list
std::deque
std::stack …
std::queue
123
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterators
124
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Begin End
10 5 8 5 17 5 11
125
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Input iterators Output iterators
Forward iterators
Bidirectional iterators
Contiguous iterators
126
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Algorithms
127
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
sorting finding
copying
filling
generating …
transforming
128
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Std::vector
129
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Std::array
130
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Iterators
131
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Reverse iterators
132
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Constant iterators
133
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Input iterators Output iterators
Forward iterators
Bidirectional iterators
Contiguous iterators
134
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
std::begin() and std::end()
135
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty
136
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya