Chapter 08
Chapter 08
Tenth Edition
Chapter 8
Arrays and Vectors
8-2
Topics 1 of 2
8.1 Arrays Hold Multiple Values
8.2 Accessing Array Elements
8.3 Inputting and Displaying Array Contents
8.4 Array Initialization
8.5 The Range-Based for loop
8.6 Processing Array Contents
8.7 Using Parallel Arrays
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-3
Topics 2 of 2
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-4
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-5
The definition
int tests[ISIZE]; // ISIZE is 5
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-6
Array Terminology
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-7
Array Examples
Examples:
Assumes int uses 4 bytes and double uses 8 bytes
const int ISIZE = 5, DSIZE = 10;
int tests[ISIZE]; // holds 5 ints, array
// occupies 20 bytes
double volumes[DSIZE];// holds 10 doubles,
// array occupies
// 80 bytes
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-8
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-9
tests[0] = 79;
cout << tests[0];
cin >> tests[1];
tests[4] = tests[0] + tests[1];
cout << tests; // illegal due to
// missing subscript
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-10
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-11
Array Subscripts
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-12
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-13
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-14
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-15
No Bounds Checking
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-16
Off-By-One Errors
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-17
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-18
Start at element 0 or 1?
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-19
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-21
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-22
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-24
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-25
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-27
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-29
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-30
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-34
Partially-Filled Arrays
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-36
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-37
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-38
Uses of typedef
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-44
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-45
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-49
Initialization at Definition
•Two-dimensional arrays are initialized row-by-row
int exams[2][2] = { {84, 78},
{92, 97} };
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-51
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-52
•Use nested loops, one for the row and one for
the column, to visit each array element.
•Accumulators can be used to calculate the sum
of the elements row-by-row, column-by-column,
or over the entire array.
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-53
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-54
Vectors
•It can hold values of any data type, specified when
the vector is defined
vector<int> scores;
vector<double> volumes;
•You can specify initial size if desired
vector<int> scores(24);
•You can use [] to access individual elements
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-56
Defining Vectors
• Define a vector of integers (starts with 0 elements)
vector<int> scores;
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-57
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-58
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-59
Arrays of Objects 2 of 2
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-62
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-64
Arrays of Structures 1 of 2
•Structures can be used as array elements
struct Student
{
int studentID;
string name;
short year;
double gpa;
};
const int CSIZE = 30;
Student class[CSIZE]; // Holds 30
// Student structures
Arrays of Structures 2 of 2
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved
8-66
Copyright
Copyright © 2020, 2017, 2014 Pearson Education, Inc. All Rights Reserved