Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 403, Class 23Slide #1 CS 403 - Programming Languages Class 23 November 16, 2000.

Similar presentations


Presentation on theme: "CS 403, Class 23Slide #1 CS 403 - Programming Languages Class 23 November 16, 2000."— Presentation transcript:

1 CS 403, Class 23Slide #1 CS 403 - Programming Languages Class 23 November 16, 2000

2 CS 403, Class 23Slide # 2 Today’s Agenda Augment Chapter 10 Quick (Re)Introduction to C++ Templates Overview of the Standard Template Library Example Code: deque & stack Announcement:. Programming Assignment, due next week

3 CS 403, Class 23Slide # 3 C++ Templates Parameterized data types Type-safe macros Come in two types Class Templates Function Templates

4 CS 403, Class 23Slide # 4 Class Templates Can specialize class (see listing #1) template class Stack… Stack Or any other type Stack

5 CS 403, Class 23Slide # 5 Class Template Member Functions Method body must be in.h file

6 CS 403, Class 23Slide # 6 Using a Class Template See listing #2 What is the output?

7 CS 403, Class 23Slide # 7 Function Templates Specialize a function to take polymorphic arguments Template T max(T a, T b) But be careful with pointer types… See listing #3 What does it print?

8 CS 403, Class 23Slide # 8 Template Function Specialization To fix “problem”, use type-specific version: template<> char* max(char* a, char* b) { return strcmp(a, b) > 0 ? a : b; }

9 CS 403, Class 23Slide # 9 Standard Template Library (STL) Generic Programming specify algorithms and data structures that work with any data type Core Components Containers Algorithms Iterators

10 CS 403, Class 23Slide # 10 STL: Containers Data structures that manage a set of memory locations Doesn’t contain many member functions Creating, copying, destroying, adding, removing No pointers to elements Algorithms do the “day-to-day” stuff

11 CS 403, Class 23Slide # 11 STL: Iterators Used to traverse elements of containers Uniform set/naming across containers Algorithms designed to work with a particular iterator category Random Access Bi-Directional Forward OutputInput

12 CS 403, Class 23Slide # 12 STL: Algorithms Decoupled from containers Parameterized by iterator types Algorithm categories: Non-mutating sequence operations Mutating sequence operations Searching and Sorting Set Operations Heap operations Numeric operations Miscellaneous

13 CS 403, Class 23Slide # 13 Orthogonal Component Structure So how does this all work together? vector v(3); v[0] = 7; v[1] = v[0] + 3; v[2] = v[0] + v[1]; reverse(v.begin(), v.end()); So what kind of components are v, v.begin(), and reverse? AlgorithmIteratorContainer

14 CS 403, Class 23Slide # 14 Example STL: deque Double-Ended QUEue Supports: Random access to elements Constant time insertion & removal of elements @ end Linear time insertion and removal of elements in the middle Constant time insertion & removal of elements @ beginning What role would the template parameter to deque fulfill?

15 CS 403, Class 23Slide # 15 Example STL: deque Use: deque Q; Q.push_back(3); Q.push_front(1); Q.insert(Q.begin() + 1, 2); Q[2] = 0; copy(Q.begin(), Q.end(), ostream iterator (cout, “ “)); What does this do?

16 CS 403, Class 23Slide # 16 Example STL: stack Adaptor that supports restricted subset of Container functionality Insertion, removal, and inspection of element at the top of the stack Does not allow iteration through its elements

17 CS 403, Class 23Slide # 17 Example STL: stack Example use: int main() { stack S; S.push(8); S.push(7); S.push(4); assert(S.size() == 3); assert(S.top() == 4); S.pop(); assert(S.top() == 7); S.pop(); assert(S.top() ==8); S.pop(); assert(S.empty()); }

18 CS 403, Class 23Slide # 18 Containers Sequences vector, deque list, slist, bit_vectorectordequeistslistbit_vector Associative Containers set, map, multiset, multimap, hash_set, hash_map, hash_multiset, hash_multimap, hashetmapmultisetmultimaphash_set hash_maphash_multisethash_multimaphash String package char_traits, basic_string, char_traitsbasic_string rope Container adaptors stack, queue, priority_queue, bitsettackqueuepriority_queuebitset

19 CS 403, Class 23Slide # 19 Algorithms Non-mutating algorithms for_each, find,, count, mismatch, equal, search Mutating algorithms copy, swap, transform, replace, fill, generate, remove, unique, reverse, rotate, random_shuffle, random_sample, partition, stable_partition, sorting, nth_element, binary search, merge, set operations heap operations, min and max, lexicographical_compare, permutations Generalized numeric algorithms iota, accumulate, inner_product, partial_sum, adjacent_difference, power

20 CS 403, Class 23Slide # 20 Iterators Iterator classes istream_iterator ostream_iterator front_insert_iterator back_insert_iterator insert_iterator reverse_iterator reverse_bidirectional_iterator raw_storage_iterator sequence_buffer


Download ppt "CS 403, Class 23Slide #1 CS 403 - Programming Languages Class 23 November 16, 2000."

Similar presentations


Ads by Google