priority_queue<T>

Slides:



Advertisements
Similar presentations
M The University Of Michigan Andrew M. Morgan EECS Lecture 22 Savitch Ch. 16 Intro To Standard Template Library STL Container Classes STL Iterators.
Advertisements

SEG4110 – Advanced Software Design and Reengineering TOPIC J C++ Standard Template Library.
C++ Templates. What is a template? Templates are type-generic versions of functions and/or classes Template functions and template classes can be used.
. STL: C++ Standard Library. Main Ideas u General purpose: generic data structures & algorithms, templates u Flexibility: Allows for many combinations.
More on the STL vector list stack queue priority_queue.
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.
Standard Template Library. Homework List HW will be posted on webpage Due Nov 15.
CMSC 202 Lesson 24 Iterators and STL Containers. Warmup Write the class definition for the templated Bag class – A bag has: Random insertion Random removal.
Templates and the STL.
Sorting and Vectors Mechanism for representing lists JPC and JWD © 2002 McGraw-Hill, Inc. Modified by S. Sudarshan.
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
1 Chapter 3 Lists, Stacks, and Queues Abstract Data Types, Vectors Sections 3.1, 3.2, 3.3, 3.4 Abstract Data Types (ADT) Iterators Implementation of Vector.
Containers Overview and Class Vector
DATA STRUCTURES AND ALGORITHMS Lecture Notes 12 Prepared by İnanç TAHRALI.
C++ How to Program, 8/e © by Pearson Education, Inc. All Rights Reserved.
Introduction to STL and the vector container class CS342 Data Structures Based on Ford & Topp.
Main Index Contents 11 Main Index Contents Week 3 – The Vector Container.
C++ STL CSCI 3110.
Templates Mark Hennessy Dept Computer Scicene NUI Maynooth C++ Workshop 18 th – 22 nd September 2006.
Chapter 9: Part 2: Vectors + Maps and STL Overview JPC and JWD © 2002 McGraw-Hill, Inc. Modified by S. Sudarshan.
Friends & Standard Template Library CSCI3110 Advanced Data Structures Lecturer: Dr. Carroll and Nan Chen.
Standard Template Library The Standard Template Library was recently added to standard C++. –The STL contains generic template classes. –The STL permits.
Lecture 7 : Intro. to STL (Standard Template Library)
The Standard Template Library Container Classes Version 1.0.
C++ Review STL CONTAINERS.
1 Chapter 3 Lists, Stacks, and Queues Reading: Sections 3.1, 3.2, 3.3, 3.4 Abstract Data Types (ADT) Iterators Implementation of Vector.
1 The Standard Template Library Drozdek Section 3.7.
Copyright © Curt Hill STL Priority Queue A Heap-Like Adaptor Class.
CSCI  Sequence Containers – store sequences of values ◦ vector ◦ deque ◦ list  Associative Containers – use “keys” to access data rather than.
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.
Object-Oriented Programming (OOP) Lecture No. 41
Lecture 35a OOP The STL Standard Template Library
Standard Template Library
Concepts of Programming Languages
Regarding homework 9 Many low grades
Standard Template Library
Lecture 7-2 : STL Iterators
Standard Template Library (STL)
Starting Out with C++ Early Objects Eighth Edition
Collections Intro What is the STL? Templates, collections, & iterators
What remains Topics Assignments Final exam
Prof. Michael Neary Lecture 7: The STL Prof. Michael Neary
Basic Data Structures.
Lecture 7-3 : STL Algorithms
Abstract Data Types Iterators Vector ADT Sections 3.1, 3.2, 3.3, 3.4
Lecture 7-2 : STL Iterators
Templates and Standard Containers
Object Oriented Programming COP3330 / CGS5409
Today’s Learning Objective
Chapter 3 Lists, Stacks, and Queues Abstract Data Types, Vectors
Recursive Linked List Operations
Lists - I The List ADT.
Lists - I The List ADT.
Iterators and STL Containers
Lecture 8 : Intro. to STL (Standard Template Library)
Standard Template Library (STL)
Lecture 8-2 : STL Iterators and Algorithms
STL (Standard Template Library)
Standard Template Library
STL List.
C++ Programming: chapter 10 – STL
Collections Intro What is the STL? Templates, collections, & iterators
Standard Template Library
Chapter 3 Lists, Stacks, and Queues
The List Container and Iterators
STL List.
Standard Template Library
Presentation transcript:

priority_queue<T> More on the C++ STL vector<T> list<T> stack<T> queue<T> priority_queue<T>

STL Container Classes Sequence containers organize items by position: 1st, 2nd, 3rd, …., last vector, list, deque Adapter containers are restricted versions of other containers stack, queue, priority_queue Associative containers organize items based on a key value set, map, multiset, multimap

vector<T> vs. list<T> can expand to hold as many items as needed O(1) insert/delete at end of the list O(n) insert/delete at position i in the list indexing (vec[i]) gives gives O(1) access to any position list<T> can expand to hold as many items as needed O(1) delete of any item O(1) insert before any item no indexing – cannot access item at position i in O(1)

Use different storage structures vector<T> items stored in an array (contiguous storage) 1 2 3 4 5 6 7 8 9 10 11 list<T> items stored in a linked list (non-contiguous storage) 1 2 3 4 5 6 7 8

Partial list<T> API list() //construct an empty list push_back(item) //add item at end of list pop_back() //remove item at end of list push_front(item) //add item at front of list pop_front() //remove item at front of list size() //return number of items in list back() //return item at end of list front() //return item at front of list

STL iterators an iterator is a generalization of a pointer used to access an element in the container each STL container class has a nested iterator class associated with it vector<T>::iterator list<T>::iterator STL container classes have methods which return iterators begin() //returns an iterator accessing first element end() //returns an iterator that is past the last //element

iterator operations iter++ //access next element iter-- //access prior element == and != //compare 2 iterators *iter //dereference the iterator

An Example list<int> myList; // store some items in myList list<int>::iterator iter; iter = myList.begin(); while (iter != myList.end()) { //process *iter iter++; }

STL Components Container classes - templates for classes which hold a collection of elements Algorithms - templates for functions which operate on a range of elements from a container range is specified by iterators Iterators give access to the element in a container allow for movement from one element to another Container Classes Algorithms Iterators

STL Algorithms designed to operate on a sequence of elements rather than on a specific container the sequence is designated by two iterators all container classes have the following two methods begin( ) - returns an iterator positioned at the container's first element end( ) - returns an iterator positioned past the container's last element (past-the-end) C.begin( ), C.end( ) specifies a sequence which contains all elements of the container C

STL Algorithms some examples of STL algorithms find(iter1, iter2, value) //returns an iterator max_element(iter1, iter2) //returns an iterator sort(iter1, iter2) //sorts using < for_each(iter1, iter2, F) //applies F to every //item see STL Programmer's Guide link on home page

Using iterators #include <iostream> #include <vector> #include <algorithm> #include <cstdlib> using namespace std; void set(int & val); void display(int val); void main( ) { vector<int> A(5); for_each(A.begin( ), A.end( ), set); // will not work w/ vector<int> A; for_each(A.begin( ), A.end( ), display); cout << endl; sort(A.begin( ), A.end( )); // operator< must be defined for A's element type } void set(int & val) { val = rand( ); } void display(int val) { cout << " " << val; }