Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 403: Programming Languages Lecture 24 Fall 2003 Department of Computer Science University of Alabama Joel Jones.

Similar presentations


Presentation on theme: "CS 403: Programming Languages Lecture 24 Fall 2003 Department of Computer Science University of Alabama Joel Jones."— Presentation transcript:

1 CS 403: Programming Languages Lecture 24 Fall 2003 Department of Computer Science University of Alabama Joel Jones

2 Lecture 242 Overview Announcements Talk today Colloquim tomorrow at 11AM in Houser 108, Jiageng Li, University of Alabama, Integrated Authorization for Grid System Environments Review Session next class Study Guide MP3 questions Evaluation Forms The STL from a comparative programming language standpoint

3 The Computer Science Department, CS Advisory Board, and ACM Student Chapter present Mike Thomas CIO, Gulf States Paper “Computer Science in Heterogenous, Multidimensional Business Environments” 5:00-6:00 PM, Tuesday, Dec. 2 nd, EE 119 Pizza & drinks served.

4 Lecture 244 Collections Almost all programming languages support aggregations of primitive types in some way C has structs, unions, arrays Pair Up: What way of aggregating does Smalltak have? What way of aggregating does Scheme have ?

5 Lecture 245 Closures and aggregation Aggregation is just a simple data type mechanism—what else is needed to have concise powerful? A lower syntactic overhead way of specifying new behavior that works over an aggregate data structure Smalltalk: myCollection do: [ code ] Scheme: (map myList (lambda code )) Works because the language provides a way of specifying functions “in-place”

6 Lecture 246 C++ Templates Parameterized data types Type-safe macros Come in two types Class Templates Function Templates

7 Lecture 247 Class Templates Can specialize with class (see listing #1) template class Stack… Stack Or any other type Stack

8 Lecture 248 Class Template Member Functions Method body must be in.h file

9 Lecture 249 Using a Class Template See listing #2 What is the output?

10 Lecture 2410 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?

11 Lecture 2411 Template Function Specialization To fix “problem”, use type-specific version: template<> char* max(char* a, char* b) { return strcmp(a, b) > 0 ? a : b; }

12 Lecture 2412 Standard Template Library (STL) Good reference at: http://www.sgi.com/tech/stl/ Generic Programming specify algorithms and data structures that work with any data type Core Components Containers Algorithms Iterators

13 Lecture 2413 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

14 Lecture 2414 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

15 Lecture 2415 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

16 Lecture 2416 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

17 Lecture 2417 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?

18 Lecture 2418 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?

19 Lecture 2419 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

20 Lecture 2420 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()); }

21 Lecture 2421 Containers Sequences vector, deque, list, slist, bit_vector, Associative Containers set, map, multiset, multimap, hash_set, hash_map, hash_multiset, hash_multimap, hash String package char_traits, basic_string, rope (not STL) Container adaptors stack, queue, priority_queue, bitset

22 Lecture 2422 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

23 Lecture 2423 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: Programming Languages Lecture 24 Fall 2003 Department of Computer Science University of Alabama Joel Jones."

Similar presentations


Ads by Google