Sunteți pe pagina 1din 113

# Arrays

## Int array ;

For (int i =0; i<4;i++){
For (int j =0; j<4;j++){
array[i][j]=i;
}
}
For (int k =0; k<4;k++){
For (int n =0; n<4;n++){
Cout << array[k][n];
}
}
1

## Int A  = {{1,2,3,4},{1,2,3,4},{1,2,3,4},

{1,2,3,4}};
Int B  = {{1,2,3,4},{1,2,3,4},{1,2,3,4},
{1,2,3,4}};
Int Sum ;
For (int i =0; i<4;i++){
For (int j =0; j<4;j++){
Sum [i][j]= A[i][j] + B[i][j]
}
}
2

## Starting Out with C++, 3rd Edition

Recursion
Unsigned long Factorial (Unsigned long number) {
if (number <=1)
return number;
else
return number * Factorial (number-1);
}
Explanation
If the number is 5
return 5* Factorial(4)
return 5* 4 Factorial(3)
return 5*4*3* Factorial(2)
return 5*4*3*2 Factorial(1)

## 7.1 Arrays Hold Multiple values

Unlike regular variables, arrays can hold
multiple values.

Figure 7-1
int count

12345

float price

float
56.981

char letter

A
5

Figure 7-2

## Starting Out with C++, 3rd Edition

Table 7-1
Array Declaration
char letters;
short rings;
int miles;
float temp;
doubledDistance;

Number of
Elements
25
100
84
12
1000

Size of
Each Element

Size of the
Array

1
2
4
4
8

25 bytes
200 bytes
336 bytes
48 bytes
8000 bytes

byte
bytes
bytes
bytes
bytes

## 7.2 Accessing Array elements

The individual elements of an array are
assigned unique subscripts. These
subscripts are used to access the elements.

## Starting Out with C++, 3rd Edition

Program 7-1
// This program asks the user for the number of hours worked
// by 6 employees. It uses a 6-element int array to store the
// values.
#include <iostream.h>
void main(void)
{
short hours;
cout << "Enter the hours worked by six employees: ";
cin >> hours;
cin >> hours;
cin >> hours;
cin >> hours;

Int hours;
cout << "Enter the hours worked by six employees: ";
For i:= 1 to 6 {
For j: 1 to 6 {
9
Cin >> hours [I] [j] }
}
Starting Out with C++, 3rd Edition

Program continues
cin >> hours;
cin >> hours;
cout << "The hours you entered are:";
cout << " " << hours;
cout << " " << hours;
cout << " " << hours;
cout << " " << hours;
cout << " " << hours;
cout << " " << hours << endl;
}

10

## Program Output with Example

Input
Enter the hours worked by six employees: 20 12 40 30 30
15 [Enter]
The hours you entered are: 20 12 40 30 30 15

11

Figure 7-7

12

## Starting Out with C++, 3rd Edition

Program 7-2
// This program asks the user for the number of hours worked
// by 6 employees. It uses a 6-element short array to store the
// values.
#include <iostream.h>
void main(void)
{
short hours;
cout << "Enter the hours worked by six employees: ";
for (int count = 0; count < 6; count++)
cin >> hours[count];
cout << "The hours you entered are:";
for (count = 0; count < 6; count++)
cout << " " << hours[count];
cout << endl;
}

13

## Program Output with Example

Input
Enter the hours worked by six employees: 20 12 40 30 30
15 [Enter]
The hours you entered are: 20 12 40 30 30 15

14

## Starting Out with C++, 3rd Edition

Program 7-3
// This program asks the user for the number of hours worked
// by 6 employees. It uses a 6-element short array to store the
// values.
#include<iostream.h>
void main(void)
{
short hours;
cout << "Enter the hours worked by six employees.\n";
for (int count = 1; count <= 6; count++)
{
cout << "Employee " << count << ": ";
cin >> hours[count - 1];
}
cout << "The hours you entered are\n";

15

## Starting Out with C++, 3rd Edition

Program continues
for (count = 1; count <= 6; count++)
{
cout << "Employee " << count << ": ";
cout << hours[count - 1] << endl;
}
}

16

## Program Output with Example

Input
Enter the hours worked by six employees.
Employee 1: 20 [Enter]
Employee 2: 12 [Enter]
Employee 3: 40 [Enter]
Employee 4: 30 [Enter]
Employee 5: 30 [Enter]
Employee 6: 15 [Enter]
The hours you entered are
Employee 1: 20
Employee 2: 12
Employee 3: 40
Employee 4: 30
Employee 5: 30
Employee 6: 15

17

## 7.3 No Bounds Checking in C++

C++ gives you the freedom to store data
past an arrays boundaries.

18

## Starting Out with C++, 3rd Edition

Program 7-4
// This program unsafely accesses an area of memory by writing
// values beyond an array's boundary.
// WARNING: If you compile and run this program, it could cause
// the computer to crash.
#include <iostream.h>
void main(void)
{
short values;

## cout << "I will store 5 numbers in a 3 element array!\n";

for (int count = 0; count < 5; count++)
values[count] = 100;
cout << "If you see this message, it means the computer\n";
cout << "has not crashed! Here are the numbers:\n";
for (int count = 0; count < 5; count++)
cout << values[count] << endl;
}

19

Figure 7-8

20

## 7.4 Array Initialization

Arrays may be initialized when they are
declared.

21

## Starting Out with C++, 3rd Edition

Program 7-5
// This program displays the number of days in each month.
// It uses a 12-element int array.
#include <iostream.h>
void main(void)
{
int days;
days = 31;
days = 28;
days = 31;
days = 30;
days = 31;
days = 30;
days = 31;

//
//
//
//
//
//
//

January
February
March
April
May
June
July

22

## Starting Out with C++, 3rd Edition

Program continues
days = 31; // August
days = 30; // September
days = 31; // October
days = 30; // November
days = 31; // December
for (int count = 0; count < 12; count++)
{
cout << "Month " << (count + 1) << " has ";
cout << days[count] << " days.\n";
}
}

23

Program Output
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month

1 has 31 days.
2 has 28 days.
3 has 31 days.
4 has 30 days.
5 has 31 days.
6 has 30 days.
7 has 31 days.
8 has 31 days.
9 has 30 days.
10 has 31 days.
11 has 30 days.
12 has 31 days.
24

## Starting Out with C++, 3rd Edition

Program 7-6
// This program displays the number of days in each month.
// It uses a 12-element int array.
#include <iostream.h>
void main(void)
{
int days = {31, 28, 31, 30,
31, 30, 31, 31,
30, 31, 30, 31};
for (int count = 0; count < 12; count++)
{
cout << "Month " << (count + 1) << " has ";
cout << days[count] << " days.\n";
}
}

25

Program Output
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month
Month

1 has 31 days.
2 has 28 days.
3 has 31 days.
4 has 30 days.
5 has 31 days.
6 has 30 days.
7 has 31 days.
8 has 31 days.
9 has 30 days.
10 has 31 days.
11 has 30 days.
12 has 31 days.
26

## Starting Out with C++, 3rd Edition

Program 7-7
// This program uses an array of ten characters to store the
// first ten letters of the alphabet. The ASCII codes of the
// characters are displayed.
#include <iostream.h>
void main(void)
{
char letters = {'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J'};
cout << "Character" << "\t" << "ASCII Code\n";
cout << "--------" << "\t" << "----------\n";
for (int count = 0; count < 10; count++)
{
cout << letters[count] << "\t\t";
cout << int(letters[count]) << endl;
}
}

27

Program Output
Character
--------A
B
C
D
E
F
G
H
I
J

ASCII Code
---------65
66
67
68
69
70
71
72
73
74
28

## Partial Array Initialization

When an array is being initialized, C++
does not require a value for every element.
int numbers = {1, 2, 4, 8};

29

## Starting Out with C++, 3rd Edition

Program 7-8
// This program has a partially initialized array.
#include <iostream.h>
void main(void)
{
int numbers = {1, 2, 4, 8}; // Initialize the
// first 4 elements.
cout << "Here are the contents of the array:\n";
for (int index = 0; index < 7; index++)
cout << numbers[index] << endl;
}

30

## Starting Out with C++, 3rd Edition

Program Output
Here are the contents of the array:
1
2
4
8
0
0
0

31

## Implicit Array Sizing

It is possible to declare an array without
specifying its size, as long as you provide an
initialization list.
float ratings[] = {1.0, 1.5, 2.0, 2.5, 3.0};

32

## Initializing With Strings

When initializing a character array with a
string, simply enclose the string in
quotation marks:
char name[] = Warren;

33

Figure 7-11

34

## Starting Out with C++, 3rd Edition

Program 7-9
// This program displays the contents of two char arrays.
#include <iostream.h>
void main(void)
{
char name1[] = "Holly";
char name2[] = {'W', 'a', 'r', 'r', 'e', 'n', '\0'};
cout << name1 << endl;
cout << name2 << endl;
}

35

Program Output
Holly
Warren

36

## 7.5 Processing Array Contents

Individual array elements are processed like
any other type of variable.

37

## Starting Out with C++, 3rd Edition

Program 7-10
// This program stores, in an array, the hours worked by 5
// employees who all make the same hourly wage.
#include <iostream.h>
void main(void)
{
int hours;
float payRate;
cout << "Enter the hours worked by 5 employees who all\n";
cout << "earn the same hourly rate.\n";
for (int index = 0; index < 5; index++)
{
cout << "Employee #" << (index + 1) << ": ";
cin >> hours[index];
}

38

## Starting Out with C++, 3rd Edition

Program continues
cout << "Enter the hourly pay rate for all the employees: ";
cin >> payRate;
cout << "Here is the gross pay for each employee:\n";
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
for (index = 0; index < 5; index++)
{
float grossPay = hours[index] * payRate;
cout << "Employee #" << (index + 1);
cout << ": \$" << grossPay << endl;
}
}

39

## Program Output with Example

Input
Enter the hours worked by 5 employees who all
earn the same hourly rate.
Employee #1: 5 [Enter]
Employee #2: 10 [Enter]
Employee #3: 15 [Enter]
Employee #4: 20 [Enter]
Employee #5: 40 [Enter]
Enter the hourly pay rate for all the employees: 12.75
[Enter]
Here is the gross pay for each employee:
Employee #1: \$63.75
Employee #2: \$127.50
Employee #3: \$191.25
Employee #4: \$255.00
Employee #5: \$510.00

40

## Starting Out with C++, 3rd Edition

Program 7-11
// This program stores, in an array, the hours worked by 5
// employees who all make the same hourly wage. It then
// displays the gross pay, including any overtime.
#include <iostream.h>
// Constant for defining the array size
void main(void)
{
int hours;
float payRate;
cout << "Enter the hours worked by 5 employees who all\n";
cout << "earn the same hourly rate.\n";
for (int index = 0; index < 5; index++)
{
cout << "Employee #" << (index + 1) << ": ";
cin >> hours[index];
}
41

## Starting Out with C++, 3rd Edition

Program continues
cout << "Enter the hourly pay rate for all the employees: ";
cin >> payRate;
cout << "Here is the gross pay for each employee:\n";
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
for (index = 0; index < 5; index++)
{
float grossPay, overTime;
if (hours[index] > 40)
{
// Calculate pay for 40 hours.
grossPay = 40 * payRate;
// Calculate overtime pay.
overTime = (hours[index] - 40) * 1.5 * payRate;
// Add regular pay and overtime pay.
grossPay += overTime;
}
42

## Starting Out with C++, 3rd Edition

Program continues
else
grossPay = hours[index] * payRate;
cout << "Employee #" << (index + 1);
cout << ": \$" << grossPay << endl;
}
}

43

## Program Output with Example

Input
Enter the hours worked by 5 employees who all
earn the same hourly rate.
Employee #1: 10 [Enter]
Employee #2: 20 [Enter]
Employee #3: 50 [Enter]
Employee #4: 40 [Enter]
Employee #5: 60 [Enter]
Enter the hourly pay rate for all the employees: 12.75 [Enter]
Here is the gross pay for each employee:
Employee #1: \$127.50
Employee #2: \$255.00
Employee #3: \$701.25
Employee #4: \$510.00
Employee #5: \$892.50
44

## 7.6 Focus on Software Engineering:

Parallel Arrays
By using he same subscript, you can build
relationships between data stored in two or
more arrays.

45

## Starting Out with C++, 3rd Edition

Program 7-12
// This program stores, in two arrays, the hours worked by 5
// employees, and their hourly pay rates.
#include <iostream.h>
// Constant for defining the array size
const int numEmps = 5;
void main(void)
{
int hours[numEmps];
float payRate[numEmps];
cout << "Enter the hours worked by << numEmps
<< employees and their\n";
cout << "hourly rates.\n";
for (int index = 0; index < numEmps; index++)
{
cout << "hours worked by employee #" << (index + 1);
cout << ": ";

46

## Starting Out with C++, 3rd Edition

Program continues
cin >> hours[index];
cout << "Hourly pay rate for employee #";
cout << (index + 1) << ": ";
cin >> payRate[index];
}
cout << "Here is the gross pay for each employee:\n";
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
for (index = 0; index < numEmps; index++)
{
float grossPay = hours[index] * payRate[index];
cout << "Employee #" << (index + 1);
cout << ": \$" << grossPay << endl;
}
}

47

## Program Output with Example

Enter
the hours worked by 5 employees and their hourly rates.
Input
hours worked by employee #1: 10 [Enter]
Hourly pay rate for employee #1: 9.75 [Enter]
hours worked by employee #2: 15 [Enter]
Hourly pay rate for employee #2: 8.62 [Enter]
hours worked by employee #3: 20 [Enter]
Hourly pay rate for employee #3: 10.50 [Enter]
hours worked by employee #4: 40 [Enter]
Hourly pay rate for employee #4: 18.75 [Enter]
hours worked by employee #5: 40 [Enter]
Hourly pay rate for employee #5: 15.65 [Enter]
Here is the gross pay for each employee:
Employee #1: \$97.50
Employee #2: \$129.30
Employee #3: \$210.00
48

## 7.7 Thou Shalt Not Assign

You cannot use the assignment operator to
copy one arrays contents to another.
for (int count=0; count < 4; count++)
newVal[count] = oldVal[count];

49

## Starting Out with C++, 3rd Edition

Table 7-2
Expression

Value

O ld V a lu e s [0 ]

10 (Contents of Element 0 of O l d V a l u e s )

O ld V a lu e s [1 ]

## 100 (Contents of Element 1 of O l d V a l u e s )

O ld V a lu e s [2 ]

## 200 (Contents of Element 2 of O l d V a l u e s )

O ld V a lu e s [3 ]

N e w V a lu e s

O ld V a lu e s

50

## 7.8 Printing the Contents of an

Array
To display the contents of an array, you
must use a loop to display the contents of
each element.
int array = { 10, 20, 30, 40, 50 };
for (int count = 0; count < 5; count++)
cout << array[count] << endl;

51

## 7.9 Arrays As Function Arguments

To pass an array as an argument to a
function, pass the name of the array.

52

## Starting Out with C++, 3rd Edition

Program 7-13
// This program demonstrates that an array element is passed
// to a function like any other variable.
#include <iostream.h>
void ShowValue(int);

// Function prototype

void main(void)
{
int collection = {5, 10, 15, 20, 25, 30, 35, 40};
for (int Cycle = 0; Cycle < 8; Cycle++)
ShowValue(collection[Cycle]);
}

53

## Starting Out with C++, 3rd Edition

Program continues
//************************************
// Definition of function showValue.
*
// This function accepts an integer argument. *
// The value of the argument is displayed.
*
//************************************
void ShowValue(int Num)
{
cout << Num << " ";
}

54

## Starting Out with C++, 3rd Edition

Program Output
5 10 15 20 25 30 35 40

55

## Starting Out with C++, 3rd Edition

Program 7-14
// This program demonstrates an array being passed to a function.
#include <iostream.h>
void showValues(int []); // Function prototype
void main(void)
{
int collection = {5, 10, 15, 20, 25, 30, 35, 40};
showValues(collection);

## // Passing address of array collection

}
//***********************************************
// Definition of function showValues.
*
// This function accepts an array of 8 integers *
// as its argument. The contents of the array
*
// is displayed.
*
//***********************************************
void showValues(int nums[])
{
for (int index = 0; index < 8; index++)
cout << nums[index] << " ";
}

56

## Starting Out with C++, 3rd Edition

Program Output
5 10 15 20 25 30 35 40

57

## Starting Out with C++, 3rd Edition

Program 7-15
// This program demonstrates an array being passed to a function.
#include <iostream.h>
void showValues(int []);

// Function prototype

void main(void)
{
int set1 = {5, 10, 15, 20, 25, 30, 35, 40};
int set2 = {2, 4, 6, 8, 10, 12, 14, 16};
showValues(set1);
cout << endl;
showValues(set2);
}
//***********************************************
// Definition of function showValues.
*
// This function accepts an array of 8 integers *
// as its argument. The contents of the array
*
// is displayed.
*
//***********************************************
void showValues(int nums[])
{
for (int index = 0; index < 8; index++)
cout << nums[index] << " ";
}

58

## Starting Out with C++, 3rd Edition

Program Output
5 10 15 20 25 30 35 40
2 4 6 8 10 12 14 16

59

## Starting Out with C++, 3rd Edition

Program 7-16
// This program uses a function that can display the contents
// of an integer array of any size.
#include <iostream.h>
void showValues(int [], int); // Function prototype
void main(void)
{
int set1 = {5, 10, 15, 20, 25, 30, 35, 40};
int set2 = {2, 4, 6, 8};
int set3 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
showValues(set1, 8);
cout << endl;
showValues(set2, 4);
cout << endl;
showValues(set3, 12);
}

60

## Starting Out with C++, 3rd Edition

Program continues
//***********************************************
// Definition of function showValues.
*
// This function displays the contents of the
*
// array passed into nums. The value passed
*
// into elements is the number of elements in
*
// the nums array.
*
//***********************************************
void showValues(int nums[], int elements)
{
for (int index = 0; index < elements; index++)
cout << nums[index] << " ";
}
61

## Starting Out with C++, 3rd Edition

Program Output
5 10 15 20 25 30 35 40
2468
1 2 3 4 5 6 7 8 9 10 11 12

62

## Starting Out with C++, 3rd Edition

Program 7-17
// This program uses a function that doubles the contents of
// the elements within an array.
#include <iostream.h>
void doubleArray(int [], int);
const int arraySize = 12;

// Function prototype

void main(void)
{
int set[arraySize] = {1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12};
cout << "The arrays values are:\n";
for (int index = 0; index < arraySize; index++)
cout << set[index] << " ";
cout << endl;
doubleArray(set, arraySize);
cout << "After calling doubleArray, the values are:\n";

63

## Starting Out with C++, 3rd Edition

Program continues
for (int index = 0; index < arraySize; index++)
cout << set[index] << " ";
cout << endl;
}
//**************************************************
// Definition of function doubleArray.
*
// This function doubles the value of each element *
// in the array passed into nums.
*
// The value passed into size is the number of
*
// elements in the nums array.
*
//**************************************************
void doubleArray(int nums[], int size)
{
for (int index = 0; index < size; index++)
nums[index] *= 2;
}
64

## Starting Out with C++, 3rd Edition

Program Output
The array values are:
1 2 3 4 5 6 7 8 9 10 11 12
After calling doubleArray, the values are:
2 4 6 8 10 12 14 16 18 20 22 24

65

## 7.10 Two-dimensional Arrays

A two-dimensional array is like several
identical arrays put together. It is useful for
storing multiple sets of data.

66

## Starting Out with C++, 3rd Edition

Program 7-18
// This program demonstrates a two-dimensional array.
#include <iostream.h>
void main(void)
{
float sales; // 2D array, 3 rows and 4
columns.
float totalSales = 0;
// To hold the total sales.
int dir, qtr;
// Loop counters.

67

## Starting Out with C++, 3rd Edition

Program continues
cout << "This program will calculate the total sales of\n";
cout << "all the company's divisions.\n";
cout << "Enter the following sales information:\n\n";
// Nested loops to fill the array with quarterly
// sales figures for each division.
for (div = 0; div < 3; div++)
{
for (qtr = 0; qtr < 4; qtr++)
{
cout << "Division " << (div + 1);
cout << ", Quarter " << (qtr + 1) << ": \$";
cin >> sales[div][qtr];
}
cout << endl; // Print blank line.
}
68

## Starting Out with C++, 3rd Edition

Program continues
// Nested loops to add all the elements.
for (div = 0; div < 3; div++)
for (qtr = 0; qtr < 4; qtr++)
totalSales += sales[div][qtr];
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
cout << "The total sales for the company are: \$";
cout << totalSales << endl;
}

69

## Program Output with Example

Input
This program will calculate the total sales of
all the company's divisions.
Enter the following sales information:
Division
Division
Division
Division

1,
1,
1,
1,

Quarter
Quarter
Quarter
Quarter

1:
2:
3:
4:

\$31569.45
\$29654.23
\$32982.54
\$39651.21

[Enter]
[Enter]
[Enter]
[Enter]

Division
Division
Division
Division

2,
2,
2,
2,

Quarter
Quarter
Quarter
Quarter

1: \$56321.02 [Enter]
2: \$54128.63 [Enter]
3: \$41235.85 [Enter]
4: \$54652.33 [Enter]

70

Output continues
Division
Division
Division
Division

3,
3,
3,
3,

Quarter
Quarter
Quarter
Quarter

1:
2:
3:
4:

\$29654.35
\$28963.32
\$25353.55
\$32615.88

[Enter]
[Enter]
[Enter]
[Enter]

71

## Passing Two-dimensional Arrays

to Functions
When a two-dimensional array is
passed to a function, the
parameter type must contain a
size declarator for the number of
columns.

72

## 7.11 Arrays of Strings

A two-dimensional array of characters can
be used as an array of C-strings.

73

## Starting Out with C++, 3rd Edition

Program 7-20
// This program displays the number of days in each month.
// It uses a two-dimensional character array to hold the
// names of the months and an int array to hold the number
// of days.
#include <iostream.h>
void main(void)
{
char months = {"January", "February", "March",
"April", "May", "June",
"July", "August", "September,
"October", "November","December"};
int days = { 31, 28, 31, 30,
31, 30, 31, 31,
30, 31, 30, 31};
for (int count = 0; count < 12; count++)
{
cout << months[count] << " has ";
cout << days[count] << " days.\n";
}
}
74
Starting Out with C++, 3rd Edition

## Program 7-20 (continued)

Program Output
January has 31 days.
February has 28 days.
March has 31 days.
April has 30 days.
May has 31 days.
June has 30 days.
July has 31 days.
August has 31 days.
September has 30 days.
October has 31 days.
November has 30 days.
December has 31 days.

75

## Three Dimensional Arrays and

Beyond
C++ allows you to create arrays with
virtually any number of dimensions.
Here is an example of a three-dimensional
array declaration:
float seat;

76

## 7.14 Introduction to the STL

vector
The Standard Template Library (or STL) is
a collection of data types and algorithms
that you may use in your programs. These
data types and algorithms are programmerdefined. They are not part of the C++
language, but were created in addition to
the built-in data types.
77

## 7.14 Introduction to the STL

vector
The data types that are defined in the STL
are commonly called containers, because
they store and organize data.
There are two types of containers in the
STL: sequence containers and associative
containers.
The vector data type is a sequence
container.
78

## 7.14 Introduction to the STL

vector
A vector is like an array in the following
ways:
A vector holds a sequence of values, or
elements.
A vector stores its elements in contiguous
memory locations.
You can use the array subscript operator [] to
read the individual elements in the vector
79

## 7.14 Introduction to the STL

vector
However, a vector offers several
advantages over arrays. Here are just a few:
You do not have to declare the number of
elements that the vector will have.
full, the vector will automatically increase its
size to accommodate the new value.
vectors can report the number of elements
they contain.
80

## Starting Out with C++, 3rd Edition

Declaring a vector
To use vectors in your program, you must
first #include the vector header file with
the following statement:
#include <vector>
Note: There is no .h at the end of the file
name.
81

## Starting Out with C++, 3rd Edition

Declaring a vector
The next step is to include the following
using namespace std;
The STL uses namespaces to organize the
names of its data types and algorithms.
82

## Starting Out with C++, 3rd Edition

Declaring a vector
Now you are ready to declare an actual
vector object. Here is an example:
vector<int> numbers;
The statement above declares numbers as
a vector of ints.
83

## Starting Out with C++, 3rd Edition

Declaring a vector
You can declare a starting size, if you
prefer. Here is an example:
vector<int> numbers(10);
The statement above declares numbers as
a vector of 10 ints.
84

## Other examples of vector

Declarations
Declaration Format

Description

vector<float> amounts;

## Declares amounts as an empty vector

of floats.

vector<int> scores(15);

ints.

## Declares letters as a vector of 25

characters. Each element is initialized
with 'A'.

vector<double> values2(values1);

## Declares values2 as a vector of

doubles. All the elements of values1,
which also a vector of doubles, are
copied to value2.

85

## Storing and Retrieving Values in

a vector
To store a value in an element that already
exists in a vector, you may use the array
subscript operator [].

86

## Starting Out with C++, 3rd Edition

Program 7-23
// This program stores, in two vectors, the hours worked by 5
// employees, and their hourly pay rates.
#include <iostream.h>
#include <vector>
// Needed to declare vectors
using namespace std;
void main(void)
{
vector<int> hours(5);
vector<float> payRate(5);

## // Declare a vector of 5 integers

// Declare a vector of 5 floats

## cout << "Enter the hours worked by 5 employees and their\n";

cout << "hourly rates.\n";
for (int index = 0; index < 5; index++)
{
cout << "Hours worked by employee #" << (index + 1);
cout << ": ";
cin >> hours[index];
cout << "Hourly pay rate for employee #";
cout << (index + 1) << ": ";
cin >> payRate[index];
}
87
Starting Out with C++, 3rd Edition

## Program 7-23 (continued)

cout << "Here is the gross pay for each employee:\n";
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
for (index = 0; index < 5; index++)
{
float grossPay = hours[index] * payRate[index];
cout << "Employee #" << (index + 1);
cout << ": \$" << grossPay << endl;
}
}

88

## Program 7-23 (continued)

Program Output with Example Input Shown in Bold
Enter the hours worked by 5 employees and their
hourly rates.
Hours worked by employee #1: 10 [Enter]
Hourly pay rate for employee #1: 9.75 [Enter]
Hours worked by employee #2: 15 [Enter]
Hourly pay rate for employee #2: 8.62 [Enter]
Hours worked by employee #3: 20 [Enter]
Hourly pay rate for employee #3: 10.50 [Enter]
Hours worked by employee #4: 40 [Enter]
Hourly pay rate for employee #4: 18.75 [Enter]
Hours worked by employee #5: 40 [Enter]
Hourly pay rate for employee #5: 15.65 [Enter]
Here is the gross pay for each employee:
Employee #1: \$97.50
Employee #2: \$129.30
Employee #3: \$210.00
Employee #4: \$750.00
Employee #5: \$626.00

89

## Using the push_back Member

Function
You cannot use the [] operator to access a
vector element that does not exist.
To store a value in a vector that does not
have a starting size, or is already full, use
the push_back member function. Here is
an example:
numbers.push_back(25);
90

## Starting Out with C++, 3rd Edition

Program 7-24
// This program stores, in two vectors, the hours worked by a specified
// number of employees, and their hourly pay rates.
#include <iostream.h>
#include <vector>
// Needed to declare vectors
using namespace std;
void main(void)
{
vector<int> hours;
vector<float> payRate;
int numEmployees;

## // hours is an empty vector

// payRate is an empty vector
// The number of employees

## cout << "How many employees do you have? ";

cin >> numEmployees;
cout << "Enter the hours worked by " << numEmployees;
cout << " employees and their hourly rates.\n";

91

## Program 7-24 (continued)

for (int index = 0; index < numEmployees; index++)
{
int tempHours;
// To hold the number of hours entered
float tempRate; // To hold the payrate entered
cout << "Hours worked by employee #" << (index + 1);
cout << ": ";
cin >> tempHours;
hours.push_back(tempHours); // Add an element to hours
cout << "Hourly pay rate for employee #";
cout << (index + 1) << ": ";
cin >> tempRate;
payRate.push_back(tempRate); // Add an element to payRate
}
cout << "Here is the gross pay for each employee:\n";
cout.precision(2);
cout.setf(ios::fixed | ios::showpoint);
for (index = 0; index < numEmployees; index++)
{
float grossPay = hours[index] * payRate[index];
cout << "Employee #" << (index + 1);
cout << ": \$" << grossPay << endl;
}
}
92

## Program 7-24 (continued)

Program Output with Example Input Shown in Bold
How many employees do you have? 3 [Enter]
Enter the hours worked by 3 employees and their hourly rates.
Hours worked by employee #1: 40 [Enter]
Hourly pay rate for employee #1: 12.63 [Enter]
Hours worked by employee #2: 25 [Enter]
Hourly pay rate for employee #2: 10.35 [Enter]
Hours worked by employee #3: 45 [Enter]
Hourly pay rate for employee #3: 22.65 [Enter]
Here is the gross pay for each employee:
Employee #1: \$505.20
Employee #2: \$258.75
Employee #3: \$1019.25

93

vector

## Unlike arrays, vectors can report the number of elements

they contain. This is accomplished with the size member
function. Here is an example of a statement that uses the
size member function:

numValues = set.size();
In the statement above, assume that numValues is an
int, and set is a vector. After the statement executes,
numValues will contain the number of elements in the
vector set.

94

vector

Example:

## void showValues(vector<int> vect)

{
for (int count = 0; count < vect.size(); count++)
cout << vect[count] << endl;
}

95

## Starting Out with C++, 3rd Edition

Program 7-25
// This program demonstrates the vector size
// member function.
#include <iostream.h>
#include <vector>
using namespace std;
// Function prototype
void showValues(vector<int>);
void main(void)
{
vector<int> values;
for (int count = 0; count < 7; count++)
values.push_back(count * 2);
showValues(values);
}
96

## Program 7-25 (continued)

//**************************************************
// Definition of function showValues.
*
// This function accepts an int vector as its
*
// argument. The value of each of the vector's
*
// elements is displayed.
*
//**************************************************
void showValues(vector<int> vect)
{
for (int count = 0; count < vect.size(); count++)
cout << vect[count] << endl;
}

97

Program Output
0
2
4
6
8
10
12

98

## Removing Elements from a

vector
Use the pop_back member function to
remove the last element from a vector.
collection.pop_back();
The statement above removes the last
element from the collection vector.
99

## Starting Out with C++, 3rd Edition

Program 7-26
// This program demosntrates the vector size member function.
#include <iostream.h>
#include <vector>
using namespace std;
void main(void)
{
vector<int> values;
// Store values in the vector
values.push_back(1);
values.push_back(2);
values.push_back(3);
cout << "The size of values is " << values.size() << endl;
// Remove a value from the vector
cout << "Popping a value from the vector...\n";
values.pop_back();
cout << "The size of values is now " << values.size() << endl;
100

## Program 7-26 (continued)

// Now remove another value from the vector
cout << "Popping a value from the vector...\n";
values.pop_back();
cout << "The size of values is now " << values.size() << endl;
// Remove the last value from the vector
cout << "Popping a value from the vector...\n";
values.pop_back();
cout << "The size of values is now " << values.size() << endl;
}

Program Output
The size of values is 3
Popping a value from the vector...
The size of values is now 2
Popping a value from the vector...
The size of values is now 1
Popping a value from the vector...
The size of values is now 0

101

## Starting Out with C++, 3rd Edition

Clearing a vector
To completely clear the contents of a
vector, use the clear member function.
Here is an example:
numbers.clear();
After the statement above executes, the
numbers vector will be cleared of all its
elements.
102

## Starting Out with C++, 3rd Edition

Program 7-27
// This program demosntrates the vector size member function.
#include <iostream.h>
#include <vector>
using namespace std;
void main(void)
{
vector<int> values(100);
cout << "The values vector has
<< values.size() << " elements.\n";
cout << "I will call the clear member function...\n";
values.clear();
cout << "Now, the values vector has
<< values.size() << " elements.\n";
}

103

## Program 7-27 (continued)

Program Output
The values vector has 100 elements.
I will call the clear member function...
Now, the values vector has 0 elements.

104

## Detecting an Empty vector

To determine if a vector is empty, use the
empty member function. The function
returns true if the vector is empty, and
false if the vector has elements stored
in it. Here is an example of its use:
if (set.empty())
cout << "No values in set.\n";
105

## Starting Out with C++, 3rd Edition

Program 7-28
// This program demosntrates the vector's empty member function.
#include <iostream.h>
#include <vector>
using namespace std;
// Function prototype
float avgVector(vector<int>);
void main(void)
{
vector<int> values;
int numValues;
float average;
cout << "How many values do you wish to average? ";
cin >> numValues;

106

## Program 7-28 (continued)

for (int count = 0; count < numValues; count++)
{
int tempValue;
cout << "Enter a value: ";
cin >> tempValue;
values.push_back(tempValue);
}
average = avgVector(values);
cout << "Average: " << average << endl;
}
//*************************************************************
// Definition of function avgVector.
*
// This function accepts an int vector as its argument. If
*
// the vector contains values, the function returns the
*
// average of those values. Otherwise, an error message is
*
// displayed and the function returns 0.0.
*
//*************************************************************
107

## Program 7-28 (continued)

float avgVector(vector<int> vect)
{
int total = 0; // accumulator
float avg;
// average
if (vect.empty())
// Determine if the vector is empty
{
cout << "No values to average.\n";
avg = 0.0;
}
else
{
for (int count = 0; count < vect.size(); count++)
total += vect[count];
avg = total / vect.size();
}
return avg;
}

108

## Program 7-28 (continued)

Program Output with Example Input Shown in Bold
How many values do you wish to average?
Enter a value: 12
Enter a value: 18
Enter a value: 3
Enter a value: 7
Enter a value: 9
Average: 9

## Program Output with Example Input Shown in Bold

How many values do you wish to average? 0
No values to average.
Average: 0

109

Functions
Member Function

Description

at(element)

## Returns the value of the element located at element in the

vector.
Example:
x = vect.at(5);
The statement above assigns the value of the 5th element of
vect to x.

capacity()

## Returns the maximum number of elements that may be stored

in the vector without additional memory being allocated.
(This is not the same value as returned by the size member
function).
Example:
x = vect.capacity();
The statement above assigns the capacity of vect to x.

110

Functions
clear()

## Clears a vector of all its elements.

Example:
vect.clear();
The statement above removes all the elements from vect.

empty()

## Returns true if the vector is empty. Otherwise, it returns false.

Example:
if (vect.empty())
cout << "The vector is empty.";
The statement above displays the message if vect is empty.

pop_back()

## Removes the last element from the vector.

Example:
vect.pop_back();
The statement above removes the last element of vect, thus
reducing its size by 1.

111

Functions
push_back(value)

## Stores a value in the last element of the vector. If the vector is

full or empty, a new element is created.
Example:
vect.push_back(7);
The statement above stores 7 in the last element of vect.

reverse()

## Reverses the order of the elements in the vector (the last

element becomes the first element, and the first element
becomes the last element.)
Example:
vect.reverse();
The statement above reverses the order of the element in
vect.

resize(elements,
value)

## Resizes a vector by elements elements. Each of the new

elements is initialized with the value in value.
Example:
vect.resize(5, 1);
The statement above increases the size of vect by 5
elements. The 5 new elements are initialized to the value 1.

112

Functions
swap(vector2)

## Swaps the contents of the vector with the contents of vector2.

Example:
vect1.swap(vect2);
The statement above swaps the contents of vect1 and
vect2.

113