0% found this document useful (0 votes)
6 views136 pages

STL Containers and Iterators Overview

Uploaded by

Dheeraj
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views136 pages

STL Containers and Iterators Overview

Uploaded by

Dheeraj
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Slides

Section : STL Containers


and Iterators
1
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Slide intentionally left empty

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

Containers Algorithms Iterators

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

Storing stuff contiguously in memory and providing


helper methods to manipulate the data

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

Storing stuff in a fixed size container

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

Traversing containers in a unified way, regardless


of the internal structure if the container. Each C++
container usually also defines iterators that
traverse it.

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

Use these references :


[Link]
[Link]
[Link]

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

What are contiguous iterators useful for ?

StackOverflow [Link]

113
The C++ 20 Masterclass : From Fundamentals to Advanced © Daniel Gakwaya
Input iterators Output iterators

Forward iterators

Bidirectional iterators

Random access 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

Containers Algorithms Iterators

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

Random access 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

Random access 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

You might also like