Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Chapter 1 C++ Templates Sections 1.6 and 1.7. 2 Templates Type-independent patterns that can work with multiple data types –Generic programming –Code.

Similar presentations


Presentation on theme: "1 Chapter 1 C++ Templates Sections 1.6 and 1.7. 2 Templates Type-independent patterns that can work with multiple data types –Generic programming –Code."— Presentation transcript:

1 1 Chapter 1 C++ Templates Sections 1.6 and 1.7

2 2 Templates Type-independent patterns that can work with multiple data types –Generic programming –Code reusable Function Templates –These define logic behind the algorithms that work for multiple data types Class Templates –These define generic class patterns into which specific data types can be plugged in to produce new classes

3 3 Function Templates Algorithms may use the same logic for different data types –Different definitions are written just to deal with different data types –Templates permit a common code, independent of the data type –Templates should be in header files, so that the compiler will know how to generate code when it sees the template used Examples –Lec4/largest.h/cpp, uselargest.cpp Error with template in the.cpp file $ g++ uselargest.cpp largest.cpp /tmp/ccAg3qmY.o: In function `main': uselargest.cpp:(.text+0x133): undefined reference to `int tlargest (int*, int)' uselargest.cpp:(.text+0x16c): undefined reference to `float tlargest (float*, int)'

4 4 Class Templates Identical code can be used for classes that have data of different types Examples –Lec4/pair.h, usepair.cpp –Use friend function to access private members (example, for IO) The approach used in the text is also ok –Note the use of a space between > and > in usepair.cpp This makes the compiler realize that >> is not a single token

5 5 An Alternative to friend Use a public ‘print’ function and an operator that calls it

6 6 STL Containers Container: stores other objects –Common operations such as: push_back, back, front, [ ], etc Not all operations are defined for all containers –Sequence: positions of elements are important Example: vector, list –Associative containers: elements are accessed through keys Example: map, set, pair Example –Lec4/vlm.cpp for example with vector, list, and map

7 7 STL Iterators Iterator: like a pointer to elements of a container –Used to access elements of a container –Popular operators * (dereference), ++, --, ==, != –Examining all the elements of a container c.begin() returns an iterator to the first element of container c c.end returns a pointer to one past the end

8 8 Matrices C++ library does not provide a matrix class Constructor –Creates rows number of zero-sized vectors –Resizes each vector to col elements Two types of [ ] operators –One for LHS that returns by reference –Another for RHS that returns by constant reference to[i] = from[i] –So we have two very identical functions What makes their signatures different?


Download ppt "1 Chapter 1 C++ Templates Sections 1.6 and 1.7. 2 Templates Type-independent patterns that can work with multiple data types –Generic programming –Code."

Similar presentations


Ads by Google