• Keine Ergebnisse gefunden

Farzin.Ghorban@studs.math.uni-wuppertal.de WS2012/2013–¨Ubungsblatt76.Dezember2012Abgabe:bis13.Dezember2012an GenerischeProgrammierung(SpezielleKapitelderpraktischenInformatik)

N/A
N/A
Protected

Academic year: 2022

Aktie "Farzin.Ghorban@studs.math.uni-wuppertal.de WS2012/2013–¨Ubungsblatt76.Dezember2012Abgabe:bis13.Dezember2012an GenerischeProgrammierung(SpezielleKapitelderpraktischenInformatik)"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

BERGISCHE UNIVERSIT ¨ AT WUPPERTAL

GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de

Fachbereich C

MATHEMATIK UND NATURWISSENSCHAFTEN Fachgruppe Mathematik und Informatik

Generische Programmierung

(Spezielle Kapitel der praktischen Informatik)

WS 2012/2013 – ¨ Ubungsblatt 7 6. Dezember 2012

Abgabe: bis 13. Dezember 2012 an Farzin.Ghorban@studs.math.uni-wuppertal.de

Prof. Dr. Hans-J¨urgen Buhl Praktische Informatik / Numerik

E-Mail:Hans-Juergen.Buhl@math.uni-wuppertal.de

WWW:http://www.math.uni-wuppertal.de/buhl

Aufgabe 1. promote trait

Benutzen Sie das Template promote trait in einer Templatefunktion my_min und testen Sie es f¨ur mindestens 10 unterschiedliche Typpaare.

Schreiben Sie ein ¨ahnliches Template arithAverage trait zur Nut- zung in einer Templatefunktion arithAverage(T x, T y) zweier nu- merischer skalarer Parameter. Der Ergebnistyp f¨ur T = int soll dabei jedoch double sein (warum?). Welche Konzepte sollte T modellieren?

Aufgabe 2. non-type template-Parameter Warum funktioniert:

#include <i o st r ea m>

using namespace s t d ;

template <bool k> void p r i n t ( ) {

i f( k==true) // o d e r auch : i f ( k ) co ut << ” t r u e ” << e n d l ;

e l s e

co ut << ” f a l s e ” << e n d l ; return;

}

i n t main ( ) {

p r i n t<7>();

p r i n t<0>();

1

(2)

return 0 ; }

Wie viele und welche Inkarnationen der Templatefunktion print() werden automatisch erzeugt?

Welche Regeln gelten f¨ur die Typ-Transformation von non- type Funktionstemplate-Parametern uber¨ diejenigen der type Funktionstemplate-Parameter hinaus?

Erg¨anzen Sie in main() Aufrufe von print<8>(); print<9>(); ...

Was erwarten Sie? ¨Uberpr¨ufen Sie Ihre Erwartungen durch Benutzung von nm.

Aufgabe 3. Template-Funktion mit array-Parametern Vergleichen Sie

#include <i o st r ea m>

#include <numeric>

template <typename Type>

Type sum ( Type ∗tp , s i z e t n ) {

return s t d : : accumulate ( tp , tp+n , Type ( ) ) ; }

i n t main ( ) {

i n t x [ 1 0 ] ;

f o r(i n t l = 0 ; l < 1 0 ; l ++) x [ l ] = l ;

s t d : : co ut << sum ( x , 1 0 ) << s t d : : e n d l ; return( 0 ) ;

} mit

#include <i o st r ea m>

#include <numeric>

template <typename Type , s i z e t n>

Type sum (const Type (&tp ) [ n ] ) {

return s t d : : accumulate ( tp , tp+n , Type ( ) ) ; }

2

(3)

i n t main ( ) {

i n t x [ 1 0 ] ;

f o r(i n t l = 0 ; l < 1 0 ; l ++) x [ l ] = l ;

s t d : : co ut << sum ( x ) << s t d : : e n d l ; return( 0 ) ;

}

Welche Vor- und Nachteile bietet die erste Variante gegen¨uber der zweiten? Schreiben Sie eine Template-Funktion unsigned int get size(.), die die Anzahl der Komponenten eines ¨ubergebenen Ar- rays als Funktionsergebnis liefert.

Aufgabe 4. InputIterator

Beschreiben Sie umgangssprachlich in eigenen Worten die einzelnen Requirements des Konzepts InputIterator in Iterator-Concepts.

Welche Konzepte m¨ussen die dem Iterator assoziierten Typen model- lieren? Skizzieren Sie die Verfeinerungshierarchie aller Iteratoren.

3

Referenzen

ÄHNLICHE DOKUMENTE

GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de..

GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de..

Schreiben Sie eine analog zu der Dokumentation der STL-Algorithmen (http://www.sgi.com/tech/stl/) aufgebaute Dokumentation Ihres ge- nerischen Algorithmus.

Welche Typen werden in /boost/concept check.hpp durch Templa- tespezialisierung als UnsignedInteger modellierend gekennzeichnet?. Was dient in der BCCL also als

Erg¨anzen Sie die generischen Funktionen my min(-), arith average(-,-) und geomMittel2(-,-) der letzten ¨ Ubungs- bl¨atter um die ¨ Uberpr¨ufung geeignet gew¨ahlter CONCEPT

Demonstrieren Sie analog, wie Sie die Template-Metafunktion template&lt;int n, int m&gt; struct cpower::result gegen unsinnige Parameter absichern k¨onnen.

Demonstrieren Sie static assert() in einem Beispielprogramm, das nur compiliert werden kann, wenn Ihre C++-Sprachumgebung einen 4 Byte langen int-Typ besitzt. Benutzen Sie dabei die

Unterscheiden Sie dabei die Vorteile f¨ur Autoren von generischen Al- gorithmen von solchen f¨ur Nutzer von generischen Algorithmen.