Chapter Six: Arrays and Vectors

Similar documents
PIC 10B Week 1 (Thurs)

Memory and Pointers written by Cathy Saxton

Review of Important Topics in CS1600. Functions Arrays C-strings

ARRAYS and ARRAYLISTS

Lecture 2 Arrays, Searching and Sorting (Arrays, multi-dimensional Arrays)

Algorithms for Arrays Vectors Pointers CS 16: Solving Problems with Computers I Lecture #14

Arrays. Arizona State University 1

Array Elements as Function Parameters

Arrays in C++ Instructor: Andy Abreu

Lab 6 Vectors and functions

Multi-Dimensional Arrays and Vectors. Class 27

Exam 3 Chapters 7 & 9

Computer Science II Lecture 2 Strings, Vectors and Recursion

CS2255 HOMEWORK #1 Fall 2012

C++ Arrays and Vectors

Review: Expressions, Variables, Loops, and more.

Data Structures Lecture 3 Order Notation and Recursion

Chapter 4 Computation

Lesson 13 - Vectors Dynamic Data Storage

calling a function - function-name(argument list); y = square ( z ); include parentheses even if parameter list is empty!

Chapter Four: Loops II

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency

7.1. Chapter 7: Arrays Hold Multiple Values. Array - Memory Layout. Array Terminology. Array Terminology 8/23/2014. Arrays Hold Multiple Values

Learning Objectives. Introduction to Arrays. Arrays in Functions. Programming with Arrays. Multidimensional Arrays

Sixth lecture; classes, objects, reference operator.

Lab 9: Pointers and arrays

Unit 14. Passing Arrays & C++ Strings

Chapter 7: Arrays Copyrig opy ht rig 2012 Pea e rson a Educa Educ ti a on, Inc I. nc

AP Computer Science Lists The Array type

Arrays. Returning arrays Pointers Dynamic arrays Smart pointers Vectors

Arrays 2 CS 16: Solving Problems with Computers I Lecture #12

C++ PROGRAMMING SKILLS Part 4: Arrays

Chapter 7 : Arrays (pp )

Arrays. Comp Sci 1570 Introduction to C++ Array basics. arrays. Arrays as parameters to functions. Sorting arrays. Random stuff

Creating a C++ Program

Unit 7. 'while' Loops

Working with Batches of Data

Lecture 12. Monday, February 7 CS 215 Fundamentals of Programming II - Lecture 12 1

Arrays. Defining arrays, declaration and initialization of arrays. Designed by Parul Khurana, LIECA.

7.1. Chapter 7: Arrays Hold Multiple Values. Array - Memory Layout. Array Terminology. Array Terminology

Programming with Arrays Intro to Pointers CS 16: Solving Problems with Computers I Lecture #11

5. Control Statements

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Templates and Vectors

For example, let s say we define an array of char of size six:

Chapter Five: Functions II

Arrays array array length fixed array fixed length array fixed size array Array elements and subscripting

University of Technology. Laser & Optoelectronics Engineering Department. C++ Lab.

Getting started with C++ (Part 2)

When we program, we have to deal with errors. Our most basic aim is correctness, but we must

CSCI-1200 Data Structures Spring 2016 Lecture 7 Iterators, STL Lists & Order Notation

Chapter 8 Arrays and Strings. Objectives. Objectives (cont d.) Introduction. Arrays 12/23/2016. In this chapter, you will:

C++ For Science and Engineering Lecture 15

Data Structures and Algorithms

Chapter 4. Computation. Bjarne Stroustrup.

C++ PROGRAMMING. For Industrial And Electrical Engineering Instructor: Ruba A. Salamh

l Determine if a number is odd or even l Determine if a number/character is in a range - 1 to 10 (inclusive) - between a and z (inclusive)

Unit 1: Preliminaries Part 4: Introduction to the Standard Template Library

Chapter 7 Constructors and Other Tools. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo

CSCE 121 ENGR 112 List of Topics for Exam 1

Arrays in Functions!

4CCS1PRP, Programming Practice 2012 Lecture 6: Arrays - Part 1

Chapter 6 Arrays and Array Lists

Discussion 1H Notes (Week 3, April 14) TA: Brian Choi Section Webpage:

Basic memory model Using functions Writing functions. Basics Prototypes Parameters Return types Functions and memory Names and namespaces

C++ Programming. Arrays and Vectors. Chapter 6. Objectives. Chiou. This chapter introduces the important topic of data structures collections

High Institute of Computer Science & Information Technology Term : 1 st. El-Shorouk Academy Acad. Year : 2013 / Year : 2 nd

UEE1302 (1102) F10 Introduction to Computers and Programming (I)

C/C++ Programming Lecture 7 Name:

CSCI-1200 Computer Science II Fall 2008 Lecture 15 Associative Containers (Maps), Part 2


Chapter Four: Loops. Slides by Evan Gallagher. C++ for Everyone by Cay Horstmann Copyright 2012 by John Wiley & Sons. All rights reserved

Chapter 5. Repetition. Contents. Introduction. Three Types of Program Control. Two Types of Repetition. Three Syntax Structures for Looping in C++

My First Command-Line Program

6 Functions. 6.1 Focus on Software Engineering: Modular Programming TOPICS. CONCEPT: A program may be broken up into manageable functions.

Separate Compilation Model

Lab 15 Review of Arrays, Array of Objects and Vector Dr. John Abraham, Professor

C Pointers. ENGG1002 Computer Programming and Applica;ons Dr. Hayden Kwok Hay So Week 2. GeGng Hold of Memory. Sta;c: When we define a variable

Preprocessor Directives

7.1 Optional Parameters

C++ Basic Elements of COMPUTER PROGRAMMING. Special symbols include: Word symbols. Objectives. Programming. Symbols. Symbols.

Chapter 12 Two-Dimensional Arrays

Chapter 17 vector and Free Store

STL: C++ Standard Library

Lectures 19, 20, 21. two valid iterators in [first, last) such that i precedes j, then *j is not less than *i.

Declaring a 2D Array

BITG 1233: Array (Part 1) LECTURE 8 (Sem 2, 17/18)

CSCI-1200 Data Structures Spring 2015 Lecture 2 STL Strings & Vectors

Programación de Computadores. Cesar Julio Bustacara M. Departamento de Ingeniería de Sistemas Facultad de Ingeniería Pontificia Universidad Javeriana

Constants. Why Use Constants? main Method Arguments. CS256 Computer Science I Kevin Sahr, PhD. Lecture 25: Miscellaneous

Purpose of Review. Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures

Patterns: Working with Arrays

CSCE 206: Structured Programming in C++

CSCE 206: Structured Programming in C++

Data types. CISC 1600/1610 Computer Science I. Array syntax. Memory allocation. Zero-indexing 4/4/2016. Arrays

An array is a collection of data that holds fixed number of values of same type. It is also known as a set. An array is a data type.

(6) The specification of a name with its type in a program. (7) Some memory that holds a value of a given type.

Intermediate Algebra. Gregg Waterman Oregon Institute of Technology

Functions, Pointers, and the Basics of C++ Classes

Chapter 2 C++ Fundamentals

Transcription:

Chapter Six: Arrays and Vectors Slides by Evan Gallagher

Chapter Goals To become familiar with using arrays and vectors to collect values To learn about common algorithms for processing arrays and vectors To write functions that receive and return arrays and vectors To be able to use two-dimensional arrays

Using Vectors When you need to work with a large number of values all together, the vector construct is your best choice. By using a vector you can conveniently manage collections of data do not worry about the details of how they are stored do not worry about how many are in the vector a vector automatically grows to any desired size

Using Arrays Arrays are a lower-level construct The array is less convenient but sometimes required for efficiency for compatibility with older software

Defining Arrays An array of double Ten elements of double type can be stored under one name as an array. double values[10]; type of each element quantity of elements the size of the array, must be a constant

Defining Arrays with Initialization When you define an array, you can specify the initial values: double values[] = { 32, 54, 67.5, 29, 35, 80, 115, 44.5, 100, 65 }; 32.0 54.0 67.5 29.0 35.0 80.0 115.0 44.5 100.0 65.0

Array Syntax

Array Syntax

Accessing an Array Element An array element can be used like any variable. To access an array element, you use the notation: values[i] where i is the index.

Accessing an Array Element To access the element at index 4 using this notation: values[4] 4 is the index. 32.0 54.0 67.5 29.0 35.0 80.0 115.0 44.5 100.0 65.0 double values[10];... cout << values[4] << endl; The output will be 35.0.

Accessing an Array Element That is, the legal elements for the values array are: values[0], the first element values[1], the second element values[2], the third element values[3], the fourth element values[4], the fifth element... values[9], the tenth and last legal element recall: double values[10]; The index must be >= 0 and <= 9. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 is 10 numbers.

Partially-Filled Arrays Capacity When the loop ends, the companion variable size has the number of elements in the array. const int CAPACITY = 100; double values[capacity]; int size = 0; double input; while (cin >> input) { if (size < CAPACITY) { values[size] = x; size++; } }

Partially-Filled Arrays Capacity How would you print the elements in a partially filled array? By using the current_size companion variable. for (int i = 0; i < current_size; i++) { cout << values[i] << endl; }

Common Algorithms Copying Consider these two arrays: int squares[5] = { 0, 1, 4, 9, 16 }; int lucky_numbers[5]; How can we copy the values from squares to lucky_numbers?

Common Algorithms Copying int squares[5] = { 0, 1, 4, 9, 16 }; int lucky_numbers[5]; for (int i = 0; i < 5; i++) { squares[i] = i * i; } when i is 0

Sorting with the C++ Library Getting data into order is something that is often needed. An alphabetical listing. A list of grades in descending order.

Sorting with the C++ Library In C++, you call the sort function to do your sorting for you. But the syntax is new to you: Recall our values array with the companion variable current_size. sort(values, values + current_size); To sort the elements into ascending numerical order, you call the sort algorithm:

Sorting with the C++ Library You will need to write: #include <algorithm> in order to use the sort function. sort(values, values + current_size);

Sorting with the C++ Library Notice also that you must tell the sort function where to begin: values, (which is the start of the array) and where to end: values + current_size, (which is one after the last element in the array). sort(values, values + current_size);

Arrays as Parameters in Functions Here is the sum function with an array parameter: Notice that to pass one array, it takes two parameters. double sum(double data[], int size) { double total = 0; for (int i = 0; i < size; i++) { total = total + data[i]; } return total; }

Arrays as Parameters in Functions When you call the function, supply both the name of the array and the size: double NUMBER_OF_SCORES = 10; double scores[number_of_scores] = { 32, 54, 67.5, 29, 34.5, 80, 115, 44.5, 100, 65 }; double total_score = sum(scores, NUMBER_OF_SCORES); You can also pass a smaller size to the function: double partial_score = sum(scores, 5); This will sum over only the first five doubles in the array.

Arrays as Parameters in Functions When you pass an array into a function, the contents of the array can always be changed: void multiply(double values[], int size, double factor) { for (int i = 0; i < size; i++) { values[i] = values[i] * factor; } }

Arrays as Parameters in Functions You can pass an array into a function but you cannot return an array.

Defining Two-Dimensional Arrays C++ uses an array with two subscripts to store a two-dimensional array. const int COUNTRIES = 7; const int MEDALS = 3; int counts[countries][medals]; An array with 7 rows and 3 columns is suitable for storing our medal count data.

Defining Two-Dimensional Arrays Unchangeable Size Just as with one-dimensional arrays, you cannot change the size of a two-dimensional array once it has been defined.

Defining Two-Dimensional Arrays Initializing But you can initialize a 2-D array: int counts[countries][medals] = { { 1, 0, 1 }, { 1, 1, 0 }, { 0, 0, 1 }, { 1, 0, 0 }, { 0, 1, 1 }, { 0, 1, 1 }, { 1, 1, 0 } };

Defining Two-Dimensional Arrays

Defining Two-Dimensional Arrays Accessing Elements The Olympic array looks like this: counts Access to the second element in the fourth row is: counts[3][1]

Defining Two-Dimensional Arrays Accessing Elements counts // set value to what is currently // stored in the array at [3][1] int value = counts[3][1];

Defining Two-Dimensional Arrays Accessing Elements counts 8 // set that position in the array to 8 counts[3][1] = 8;

Two-Dimensional Array Parameters int row_total(int table[][columns], int row) In this function, to find the element table[row][j] the compiler generates code by computing the offset (row * COLUMNS) + j

Two-Dimensional Array Parameters Common Error Leaving out the columns value is a very common error. int row_total(int table[][], int row)... The compiler doesn t know how long each row is!

Two-Dimensional Array Parameters Not an Error Putting a value for the rows is not an error. int row_total(int table[17][columns], int row)... The compiler just ignores whatever you place there.

Two-Dimensional Array Parameters Not an Error Putting a value for the rows is not an error. int row_total(int table[17][columns], int row)... The compiler just ignores whatever you place there. int row_total(int table[][columns], int row)...

Vectors A vector is not fixed in size when it is created and it does not have the limitation of needing an auxiliary variable AND you can keep putting things into it forever! Well, conceptually forever. (There s only so much RAM.)

Defining Vectors When you define a vector, you must specify the type of the elements. vector<double> data; Note that the element type is enclosed in angle brackets. data can contain only doubles

Defining Vectors By default, a vector is empty when created. vector<double> data; // data is empty

Defining Vectors.

Defining Vectors

Accessing Elements in Vectors You access the elements in a vector the same way as in an array, using an index. vector<double> values(10); //display the forth element cout << values[3] << end; HOWEVER

Accessing Elements in Vectors It is an error to access a element that is not there in a vector. vector<double> values; //display the forth element cout << values[3] << end; EMPTY! ERROR!

push_back and pop_back The method push_back is used to put a value into a vector: values.push_back( 32 );

push_back and pop_back values.push_back( 32 ); adds the value 32.0 to the vector named values. The vector increases its size by 1.

push_back and pop_back The method pop_back removes the last value placed into the vector with push_back. values.pop_back();

push_back and pop_back values.pop_back(); removes the last value from the vector named values and the vector decreases its size by 1.

push_back Adds an Element vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back();

push_back Adds an Element values values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values is an empty vector. Its size is 0.

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back();

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); 32 is placed into the vector. Its size is now 1.

push_back Adds an Element vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); 54 is placed into the vector. It now contains the elements 32.0 and 54.0, and its size is 2.

push_back Adds an Element vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); 67.5 is placed into the vector. It now contains the elements 32.0, 54.0 and 67.5, and its size is 3.

push_back Adds an Element vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); 29 is placed into the vector. It now contains the elements 32.0, 54.0, 67.5 and 29.0, and its size is 4.

push_back Adds an Element vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values

push_back Adds an Element values vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); 65 is placed into the vector. It now contains the elements 32.0, 54.0, 67.5, 29.0 and 65.0, and its size is 5.

Removing the Last Element with pop_back vector<double> values; values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); values

Removing the Last Element with pop_back vector<double> values; values values.push_back(32); values.push_back(54); values.push_back(67.5); values.push_back(29); values.push_back(65); values.pop_back(); poof 65 is no longer in the vector. It now contains only the elements 32.0, 54.0, 67.5 and 29.0, and its size is 4.

push_back and pop_back You can use push_back to put user input into a vector: double input; while (cin >> input) { values.push_back(input); }

Using Vectors size_of With arrays, to display every element, it would be: for (int i = 0; i < 10; i++) { cout << values[i] << endl; } But with vectors, we don t know about that 10!?

Using Vectors size_of Vectors have the size member function which returns the current size of a vector. The vector always knows how many are in it and you can always ask it to give you that quantity by calling the size method: for (int i = 0; i < values.size(); i++) { cout << values[i] << endl; }

Vectors Parameters Changing the Values Sometimes the function should change the values stored in the vector: void multiply(vector<double>& values, double factor) { for (int i = 0; i < values.size(); i++) { values[i] = values[i] * factor; } } Note that the vector is passed by reference, just like any other parameter you want to change.

Vectors Returned from Functions Sometimes the function should return a vector. Vectors are no different from any other values in this regard. Simply build up the result in the function and return it: vector<int> squares(int n) { vector<int> result; for (int i = 0; i < n; i++) { result.push_back(i * i); } } return result; The function returns the squares from 0 2 up to (n 1) 2 by returning a vector.

Vectors and Arrays as Parameters in Functions Vectors as parameters are easy. Arrays are not quite so easy. (vectors vectors )

Common Algorithms Copying, Arrays Cannot Be Assigned Suppose you have two arrays int squares[5] = { 0, 1, 4, 9, 16 }; int lucky_numbers[5]; The following assignment is an error: lucky_numbers = squares; // Error You must use a loop to copy all elements: for (int i = 0; i < 5; i++) { lucky_numbers[i] = squares[i]; }

Common Algorithms Copying, Vectors Can Be Assigned Vectors do not suffer from this limitation. Consider this example: vector<int> squares; for (int i = 0; i < 5; i++) { squares.push_back(i * i); } vector<int> lucky_numbers; // Initially empty lucky_numbers = squares; // Now lucky_numbers contains // the same elements as squares

Sorting with the C++ Library Recall that you call the sort function to do your sorting for you. This can be used on vectors also. The syntax for vectors is even more unusual than arrays: sort(values.begin(), values.end()); Go ahead and use it as you like. But don t forget to #include <algorithm>

End Chapter Six Slides by Evan Gallagher