Data Structures Using C++ 2E

Slides:



Advertisements
Similar presentations
© 2001 Business & Information Systems 2/e1 Chapter 1 Information Systems in Business.
Advertisements

Copyright © 2002 Pearson Education, Inc. Slide 1.
Chapter 19 Standard Template Library. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives Iterators Constant and mutable.
©2003 South-Western Chapter 14 Version 3e1 chapter Sales Promotion and Personal Selling 14 Prepared by Deborah Baker Texas Christian University.
Linux+ Guide to Linux Certification, Second Edition
Main Index Contents 11 Main Index Contents Shifting blocks of elements… Shifting blocks of elements… Model of a list object… Model of a list object… Sample.
Data Structures Using C++ 2E Chapter 10 Sorting Algorithms.
Tutorial 5 Working with Web Tables
Guide to Linux Installation and Administration, 2e1 Chapter 5 Using Linux Graphical Environments.
SEG4110 – Advanced Software Design and Reengineering TOPIC J C++ Standard Template Library.
Python Programming: An Introduction to Computer Science
Python Programming, 2/e1 Python Programming: An Introduction to Computer Science Chapter 2.
Python Programming: An Introduction to Computer Science
A+ Guide to Managing and Maintaining Your PC, 7e Chapter 1 Introducing Hardware.

Array-Based Lists List Length of a list
. STL: C++ Standard Library (continued). STL Iterators u Iterators are allow to traverse sequences u Methods  operator*  operator->  operator++, and.
TEMPLATES Lecture Presented By SHERY KHAN Object Orienting Programming.
C++ Templates. What is a template? Templates are type-generic versions of functions and/or classes Template functions and template classes can be used.
Exceptions, Templates, And The Standard Template Library (STL) Chapter 16.
Copyright © 2012 Pearson Education, Inc. Chapter 16: Exceptions, Templates, and the Standard Template Library (STL)
C++ Sets and Multisets Set containers automatically sort their elements automatically. Multisets allow duplication of elements whereas sets do not. Usually,
Chapter 14: Overloading and Templates C++ Programming: Program Design Including Data Structures, Fifth Edition.
Chapter 14: Overloading and Templates
Standard Containers: Vectors
Main Index Contents 11 Main Index Contents Container Types Container Types Sequence Containers Sequence Containers Associative Containers Associative Containers.
Main Index Contents 11 Main Index Contents Container Types Container Types Sequence Containers Sequence Containers Associative Containers Associative Containers.
C++ Programming: Program Design Including Data Structures, Second Edition Chapter 22: Standard Template Library (STL)
Data Structures Using C++1 Chapter 13 Standard Template Library (STL) II.
Chapter 15: Operator Overloading
Templates and the STL.
Dr. Yingwu Zhu STL Vector and Iterators. STL (Standard Template Library) 6:14:43 AM 2 A library of class and function templates Components: 1. Containers:
Data Structures Using C++ 2E
Containers Overview and Class Vector
C++ How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved.
Generic Programming Using the C++ Standard Template Library.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 122 – Data Structures Standard Template Library (STL)
Data Structures Using C++ 2E Chapter 13 Standard Template Library (STL) II.
C++ STL CSCI 3110.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 22: Standard Template Library (STL)
1. The term STL stands for ? a) Simple Template Library b) Static Template Library c) Single Type Based Library d) Standard Template Library Answer : d.
Standard Template Library (STL) Chapter 4, General Summary Brent M. Dingle, Ph.D. Game Design and Development Program Department of Mathematics, Statistics,
Data Structures Using C++1 Chapter 4 Standard Template Library (STL)
Standard Template Library The Standard Template Library was recently added to standard C++. –The STL contains generic template classes. –The STL permits.
Iterator for linked-list traversal, Template & STL COMP171 Fall 2005.
Chapter 22 STL Containers §22.1 STL Basics §22.2 STL Iterators §22.3 Sequence Containers §22.4 Associative Containers §22.5 Container Adapters.
 2003 Prentice Hall, Inc. All rights reserved.m ECE 2552 Dr. Këpuska based on Dr. S. Kozaitis Summer Chapter 15 - Class string and String Stream.
CS212: Object Oriented Analysis and Design Lecture 24: Introduction to STL.
Lecture 7 : Intro. to STL (Standard Template Library)
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
Chapter 13: Overloading and Templates. Objectives In this chapter, you will – Learn about overloading – Become familiar with the restrictions on operator.
Standard Template Library (STL) - Use Vector and Deque
STL CSSE 250 Susan Reeder. What is the STL? Standard Template Library Standard C++ Library is an extensible framework which contains components for Language.
Copyright © 2009 – Curt Hill Standard Template Library An Introduction.
Introduction The STL is a complex piece of software engineering that uses some of C++'s most sophisticated features STL provides an incredible amount.
C++ Review STL CONTAINERS.
Chapter 17 – Templates. Function Templates u Express general form for a function u Example: template for adding two numbers Lesson 17.1 template Type.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Function Templates 16.2.
Unit VI.  C++ templates are a powerful mechanism for code reuse, as they enable the programmer to write code (classes as well as functions) that behaves.
1 The Standard Template Library The STL is a collection of Container classes These are class templates for containers. A container is an object that stores.
CS212: Object Oriented Analysis and Design
Standard Template Library (STL)
Starting Out with C++ Early Objects Eighth Edition
Chapter 22: Standard Template Library (STL)
CS212: Object Oriented Analysis and Design
Standard Template Library
STL List.
STL List.
Standard Template Library
Presentation transcript:

Data Structures Using C++ 2E Chapter 4 Standard Template Library (STL) I 1

Objectives Learn about the Standard Template Library (STL) Become familiar with the three basic components of the STL: containers, iterators, and algorithms Explore how vector and deque containers are used to manipulate data in a program Discover the use of iterators Data Structures Using C++ 2E

Components of the STL Program’s main objective is to manipulate data and generate results Requires ability to store data, access data, and manipulate data STL components Containers Iterators: step through container elements Algorithms: manipulate data Containers and iterators Class templates Data Structures Using C++ 2E

Container Types STL containers categories Sequence containers (sequential containers) Associative containers Container adapters Data Structures Using C++ 2E

Sequence Containers Every object has a specific position Predefined sequence containers vector , deque , list Sequence container vector Logically: same as arrays Processed like arrays All containers Use same names for common operations Have specific operations Data Structures Using C++ 2E

Sequence Container: vector Vector container Stores, manages objects in a dynamic array Elements accessed randomly Time-consuming item insertion: middle, beginning Fast item insertion: end Class implementing vector container vector Header file containing the class vector Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) Using a vector container in a program requires the following statement: #include <vector> Defining a vector container object Specify object type Example: vector<int> intlist; Example: vector<string> stringList; Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) Declaring vector objects TABLE 4-1 Various ways to declare and initialize a vector container Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) Manipulating data stored in a vector sequence container Basic operations Item insertion Item description Stepping through the elements of a vector array Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) TABLE 4-2 Operations to access the elements of a vector container Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) class vector Provides various operations to process vector container elements Iterator Argument position in STL terminology Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) TABLE 4-3 Various operations on a vector container Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) TABLE 4-3 Various operations on a vector container (cont’d.) Data Structures Using C++ 2E

Sequence Container: vector (cont’d.) Function push_back Adds element to end of container Used when declaring vector container Specific size unknown Data Structures Using C++ 2E

Declaring an Iterator to a Vector Container Process vector container like an array Using array subscripting operator Process vector container elements Using an iterator class vector: function insert Insert element at a specific vector container position Uses an iterator class vector: function erase Remove element Data Structures Using C++ 2E

Declaring an Iterator to a Vector Container (cont’d.) class vector contains typedef iterator Declared as a public member Vector container iterator Declared using typedef iterator Example vector<int>::iterator intVecIter; Data Structures Using C++ 2E

Declaring an Iterator to a Vector Container (cont’d.) Requirements for using typedef iterator Container name (vector) Container element type Scope resolution operator ++intVecIter Advances iterator intVecIter to next element into the container *intVecIter Returns element at current iterator position Data Structures Using C++ 2E

Declaring an Iterator to a Vector Container (cont’d.) Using an iterator into a vector container Manipulating element type to be int Data Structures Using C++ 2E

Containers and the Functions begin and end Returns position of the first element into the container end Returns position of the last element into the container Functions have no parameters class vector Contains member functions used to find number of elements currently in the container Data Structures Using C++ 2E

Containers and the Functions begin and end (cont’d.) TABLE 4-4 Functions to determine the size of a vector container Data Structures Using C++ 2E

Member Functions Common to All Containers Examples Default constructor Several constructors with parameters Destructor Function inserting an element into a container Class encapsulates data, operations on that data Into a single unit Every container is a class Several operations directly defined for a container Provided as part of class definition Data Structures Using C++ 2E

TABLE 4-5 Member functions common to all containers Data Structures Using C++ 2E

TABLE 4-5 Member functions common to all containers (cont’d.) Data Structures Using C++ 2E

Member Functions Common to Sequence Containers TABLE 4-6 Member functions common to all sequence containers Data Structures Using C++ 2E

The copy Algorithm Provides convenient way to output container elements Generic STL algorithm Usable with any container type and arrays Does more than output container elements Allows copying of elements from one place to another Function template copy definition Contained in header file algorithm Data Structures Using C++ 2E

ostream Iterator and Function copy Output container contents Use a for loop and the function begin Use the function end to set limit Use Function copy ostream iterator type specifies destination Creating an iterator of type ostream Specify element type iterator will output Function copy Can output container elements using ostream iterator Directly specify ostream iterator in function copy Data Structures Using C++ 2E

Sequence Container: deque Deque: double-ended queue Implemented as dynamic arrays Can expand in either direction Class name defining deque container deque Header file deque contains Definition of the class deque Functions to implement various operations on a deque object Class deque contains several constructors Data Structures Using C++ 2E

Sequence Container: deque (cont’d.) TABLE 4-7 Various ways to declare a deque object Data Structures Using C++ 2E

Sequence Container: deque (cont’d.) TABLE 4-8 Various operations that can be performed on a deque object Data Structures Using C++ 2E

Iterators Work like pointers Point to elements of a container (sequence or associative) Allow successive access to each container element Two most common operations on iterators ++ (increment operator) * (dereferencing operator) Examples ++cntItr; *cntItr; Data Structures Using C++ 2E

Types of Iterators Input iterators Output iterators Forward iterators Bidirectional iterators Random access iterators Data Structures Using C++ 2E

Input Iterators Read access Step forward element-by-element Return values element-by-element Provided for reading data from an input stream Data Structures Using C++ 2E

Input Iterators (cont’d.) TABLE 4-9 Operations on an input iterator Data Structures Using C++ 2E

Output Iterators Write access Step forward element-by-element Used for writing data to an output stream Cannot be used to iterate over a range twice Data Structures Using C++ 2E

Output Iterators (cont’d.) TABLE 4-10 Operations on an output iterator Data Structures Using C++ 2E

Forward Iterators Combination of All of input iterators functionality and almost all output iterators functionality Can refer to same element in same collection Can process same element more than once Data Structures Using C++ 2E

Forward Iterators (cont’d.) TABLE 4-11 Operations on a forward iterator Data Structures Using C++ 2E

Bidirectional Iterators Forward iterators that can also iterate backward over the elements Operations defined for forward iterators applicable to bidirectional Iterators To step backward Decrement operations also defined for biDirectionalIterator Can be used only with containers of type: vector, deque, list, set, multiset, map, and multimap Data Structures Using C++ 2E

Bidirectional Iterators (cont’d.) TABLE 4-12 Additional operations on a bidirectional iterator Data Structures Using C++ 2E

Random Access Iterators Bidirectional iterators that can randomly process container elements Can be used with containers of type: vector , deque , string, and arrays Operations defined for bidirectional iterators applicable to random access iterators Data Structures Using C++ 2E

Random Access Iterators (cont’d.) TABLE 4-13 Additional operations on a random access iterator Data Structures Using C++ 2E

Iterators (cont’d.) typedef iterator Every container (sequence or associative) contains a typedef iterator Iterator into a container declared using typedef iterator Must use appropriate container name, container element type, scope resolution operator Data Structures Using C++ 2E

Iterators (cont’d.) typedef const_iterator Modify container elements using an iterator into a container and dereferencing operator (*) Prevents iterator from modifying elements of container declared as constant Every container contains typedef const_iterator Read-only iterator Data Structures Using C++ 2E

Iterators (cont’d.) typedef reverse_iterator Every container contains typedef reverse_iterator Used to iterate through the elements of a container in reverse Data Structures Using C++ 2E

Iterators (cont’d.) typedef const_reverse iterator Read-only iterator Used to iterate through elements of a container in reverse Required if Container declared as const Need to iterate through the elements of the container in reverse Data Structures Using C++ 2E

Iterators (cont’d.) TABLE 4-14 Various typedefs common to all containers Data Structures Using C++ 2E

Stream Iterators istream_iterator Used to input data into a program from an input stream class istream_iterator Contains definition of an input stream iterator General syntax to use an istream iterator Data Structures Using C++ 2E

Stream Iterators (cont’d.) ostream iterators Used to output data from a program into an output stream class ostream_iterator Contains definition of an output stream iterator General syntax to use an ostream iterator Data Structures Using C++ 2E

Summary STL Iterators Algorithms Provides class templates Process lists, stacks, and queues Three main components Containers, iterators, and algorithms STL containers: class templates Iterators Step through the elements of a container Algorithms Manipulate elements in a container Data Structures Using C++ 2E

Summary (cont’d.) Main categories of containers Sequence containers, associative containers, container adapters Three predefined sequence containers vector, deque, and list copy algorithm Copies elements in a given range to another place Function copy, using an ostream iterator Can output the elements of a container Five categories of iterators: input, output, forward, bidirectional, random access iterator Data Structures Using C++ 2E