Lecture 5 - Page 4 : 39
Notes about C++
Templates and The Standard Library
* Templates
Templates
Templates versus generics in Java, C# and C++
Example - Point<C>
Class templates in C++
Example - Point<C,dim,default_value>
Function templates
Policies with Templates
Example of Policies with Templates
Template Specialization
Example - Specialization of Point<C> to Point<char>
Specialization of class templates - complete and partial
Compile time computations with template specialization
* Vector Basics
Vectors - basic use
* Iterators
Iterators seen as generalized pointers
Example uses of iterators - basis stuff
Different classifications of iterators
Categories of iterators
Insert iterators
* Standard Containers
Documentation of the container library
Overview of containers
A priority queue example
A map example
Common properties of containers
Container member types
A vector specialization: vector<bool>
* Algorithms
Documentation of the algorithms library
Overview of Algorithms
Principles used for algorithms
The for-each algorithm
Function objects
Using the sort algorithm
An example of for-each and function objects
Use of function objects in STL
Adapter examples
Example - Point<C>
We make a type parameterized Point - class
Point<C>
A type parameterized variant of class Point - point.h.
The implementation of the template class Point - point.cc.
A program that illustrate template instantiation.
Lessons learned
The definition of member functions in the template class becomes more complex
See the file
point.cc
Template instantiation first occurs when
Point<int>
and
Point<double>
is encoutered
For this reason,
point.cc
must be included in
prog.cc
instead of (as usual)
point.h
A template class with friends