diff --git a/20220414/ad-20220414.pdf b/20220414/ad-20220414.pdf index fd26cb279064c7fbdf3676a6f1bb0739f017a1e1..6f15ed8bcdd2dcb84de7eab2aac5676fdb84348e 100644 Binary files a/20220414/ad-20220414.pdf and b/20220414/ad-20220414.pdf differ diff --git a/20220414/ad-20220414.tex b/20220414/ad-20220414.tex index 80cf1edcd18a563224b0138f62493579f7ba72ca..8da89c90843f61c4dd9d812d11646bc80a12cab8 100644 --- a/20220414/ad-20220414.tex +++ b/20220414/ad-20220414.tex @@ -200,16 +200,16 @@ \begin{lstlisting} int prime[5] = { 2, 3, 5, 7, 11 }; for (int *p = prime; p != prime + 5; p++) - cout << *p << endl; + std::cout << *p << std::endl; \end{lstlisting} \bigskip Iterator als Verallgemeinerung: \medskip \begin{lstlisting} - array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; - for (array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++) - cout << *p << endl; + std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; + for (std::array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++) + std::cout << *p << std::endl; \end{lstlisting} \end{frame} diff --git a/20220421/ad-20220421.pdf b/20220421/ad-20220421.pdf index 970f517855668102bd369661c5ceb55320787319..6bbb30cd1be57c9186477f98f24da3fb9b60d3f0 100644 Binary files a/20220421/ad-20220421.pdf and b/20220421/ad-20220421.pdf differ diff --git a/20220421/ad-20220421.tex b/20220421/ad-20220421.tex index fa90ef5b39d33c4a7384020f0967ab70c3a6f13d..497c6de17c04a417f0081efbc86abd20112a150b 100644 --- a/20220421/ad-20220421.tex +++ b/20220421/ad-20220421.tex @@ -151,22 +151,45 @@ \showsection \showsubsection - Pointer-Arithmetik: + \begin{onlyenv}<1> + Pointer-Arithmetik: + \medskip + \begin{lstlisting}[gobble=6] + int prime[5] = { 2, 3, 5, 7, 11 }; + for (int *p = prime; p != prime + 5; p++) + std::cout << *p << std::endl; + \end{lstlisting} + + \bigskip + \end{onlyenv} + + Iterator als Verallgemeinerung: \medskip \begin{lstlisting} - int prime[5] = { 2, 3, 5, 7, 11 }; - for (int *p = prime; p != prime + 5; p++) - cout << *p << endl; + std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; + for (std::array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++) + std::cout << *p << std::endl; \end{lstlisting} \bigskip - Iterator als Verallgemeinerung: + Mit \lstinline{auto}-Datentyp: \medskip \begin{lstlisting} - array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; - for (array <int, 5>::iterator p = prime.begin (); p != prime.end (); p++) - cout << *p << endl; + std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; + for (auto p = prime.begin (); p != prime.end (); p++) + std::cout << *p << std::endl; \end{lstlisting} + + \begin{onlyenv}<2-> + \bigskip + Mit Doppelpunkt-Syntax: + \medskip + \begin{lstlisting}[gobble=6] + std::array <int, 5> prime = { { 2, 3, 5, 7, 11 } }; + for (auto p : prime) + std::cout << p << std::endl; + \end{lstlisting} + \end{onlyenv} \end{frame} \subsection{Exceptions} diff --git a/20220421/sets-1.cpp b/20220421/sets-1.cpp new file mode 100644 index 0000000000000000000000000000000000000000..27278fa2c25ba084bcd10923f2ff95c92dc54cd2 --- /dev/null +++ b/20220421/sets-1.cpp @@ -0,0 +1,11 @@ +#include <iostream> +#include <set> + +int main () +{ + std::set <int> prime = { { 2, 3, 5, 7, 11 }}; + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-10.cpp b/20220421/sets-10.cpp new file mode 100644 index 0000000000000000000000000000000000000000..49cbf5fb5941e22fa92c07f85fb921384874facd --- /dev/null +++ b/20220421/sets-10.cpp @@ -0,0 +1,36 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, bool (*) (int, int)> prime (less); + + // "bool (*less) (int a, int b)" + // wäre eine Variable "less" vom Typ "Zeiger auf eine Funktion, + // die 2 ints erwartet und ein bool zurückgibt". + // Um nur den Typen dieses Zeigers zu bekommen, lassen wir den + // Bezeichner "less" für die Variable weg. + + // Nur "bool *less (int a, int b)" + // wäre eine Funktion "less", die einen Zeiger auf bool zurückgibt + // und 2 ints als Parameter erwartet. + + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-11.cpp b/20220421/sets-11.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0e734833ed98fc743a943e413b06aa8b522933e7 --- /dev/null +++ b/20220421/sets-11.cpp @@ -0,0 +1,20 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, bool (*) (int, int)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-12.cpp b/20220421/sets-12.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dbd9d09ecaf7fce98534f14e8a7e87abbe9cbbbe --- /dev/null +++ b/20220421/sets-12.cpp @@ -0,0 +1,16 @@ +#include <iostream> +#include <set> + +int main () +{ + auto less = [] (int a, int b) { return a > b; }; + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-13.cpp b/20220421/sets-13.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fe60b8be43cfb34a8c7796b52cec1ed6caf69c40 --- /dev/null +++ b/20220421/sets-13.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-14.cpp b/20220421/sets-14.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ce6e128cb9f160aa6672d79a092f4d562d60ed9c --- /dev/null +++ b/20220421/sets-14.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-15.cpp b/20220421/sets-15.cpp new file mode 100644 index 0000000000000000000000000000000000000000..26233018b86c7a67230b18f24f211422cbd48bd3 --- /dev/null +++ b/20220421/sets-15.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [fwd] (int a, int b) + { + fwd = !fwd; + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-16.cpp b/20220421/sets-16.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ab86f9cf4aeb6e06620dc10916d5ffda2d2a6958 --- /dev/null +++ b/20220421/sets-16.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [&fwd] (int a, int b) + { + fwd = !fwd; + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-17.cpp b/20220421/sets-17.cpp new file mode 100644 index 0000000000000000000000000000000000000000..06fd778e71c8eb135a88cff16f3a109ad08839ae --- /dev/null +++ b/20220421/sets-17.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + fwd = 0; + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-18.cpp b/20220421/sets-18.cpp new file mode 100644 index 0000000000000000000000000000000000000000..92537b799f6f5259622aae566650ffa15fc5e414 --- /dev/null +++ b/20220421/sets-18.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-19.cpp b/20220421/sets-19.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fb81394c27ef553251f802c2cc6e84426e9b640a --- /dev/null +++ b/20220421/sets-19.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [&fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-2.cpp b/20220421/sets-2.cpp new file mode 100644 index 0000000000000000000000000000000000000000..330227bfbfea1920f2100098cac8899c49817f73 --- /dev/null +++ b/20220421/sets-2.cpp @@ -0,0 +1,15 @@ +#include <iostream> +#include <set> + +int main () +{ + std::set <int> prime = { { 2, 3, 7, 11, 13, 17, 19 }}; + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-20.cpp b/20220421/sets-20.cpp new file mode 100644 index 0000000000000000000000000000000000000000..08a1324d6fa13e8a642649ae181601316fd93eaf --- /dev/null +++ b/20220421/sets-20.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [const &fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-21.cpp b/20220421/sets-21.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7923867a04f2972064e65ee64d9156b61201a40d --- /dev/null +++ b/20220421/sets-21.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + + auto less = [&const fwd] (int a, int b) + { + if (fwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-22.cpp b/20220421/sets-22.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c00ba7cae5c587830318eb682870a0c0589468ba --- /dev/null +++ b/20220421/sets-22.cpp @@ -0,0 +1,27 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + const bool &cfwd = fwd; + + auto less = [&cfwd] (int a, int b) + { + if (cfwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-23.cpp b/20220421/sets-23.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dc7a86b5363d40a347e65e5ed0ae286acb7d4925 --- /dev/null +++ b/20220421/sets-23.cpp @@ -0,0 +1,28 @@ +#include <iostream> +#include <set> + +int main () +{ + bool fwd = 1; + const bool &cfwd = fwd; + + auto less = [&cfwd] (int a, int b) + { + cfwd = !cfwd; + if (cfwd) + return a < b; + else + return a > b; + }; + + std::set <int, decltype (less)> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + fwd = 0; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-24.cpp b/20220421/sets-24.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b19ea745e479fd38be4d3c56f95dfbd1c5be36c6 --- /dev/null +++ b/20220421/sets-24.cpp @@ -0,0 +1,26 @@ +#include <iostream> +#include <set> + +bool fwd = 1; + +bool less (int a, int b) +{ + if (fwd) + return a < b; + else + return a > b; +} + +int main () +{ + fwd = 0; + std::set <int, decltype (less)*> prime ({ 2, 3, 7, 11, 13 }, less); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-3.cpp b/20220421/sets-3.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ea8ca648d457c26cb820d7f8e71269d0c1c457b4 --- /dev/null +++ b/20220421/sets-3.cpp @@ -0,0 +1,21 @@ +#include <iostream> +#include <set> + +int main () +{ + auto less = [] (int a, int b) { return a > b; }; + std::set <int, decltype (less)> prime (less); + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-4.cpp b/20220421/sets-4.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5a570fd45863c48f8161b6f4f8539699687947e3 --- /dev/null +++ b/20220421/sets-4.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, decltype (less)*> prime (less); + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-5.cpp b/20220421/sets-5.cpp new file mode 100644 index 0000000000000000000000000000000000000000..df0e25fd02c1d76e3eb043c1471a278d31f6d31a --- /dev/null +++ b/20220421/sets-5.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, decltype (&less)> prime (&less); + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-6.cpp b/20220421/sets-6.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d7b788325e0afc13a78bdc9a27b7a513463d57b6 --- /dev/null +++ b/20220421/sets-6.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, &less> prime (&less); + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-7.cpp b/20220421/sets-7.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bbae6b37e19436c4bf2e677e01ad2cc94402d146 --- /dev/null +++ b/20220421/sets-7.cpp @@ -0,0 +1,25 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, decltype (&less)> prime (less); + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-8.cpp b/20220421/sets-8.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fe5819174bfac778efcf1f8ac2d21a49c4b8c656 --- /dev/null +++ b/20220421/sets-8.cpp @@ -0,0 +1,36 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, bool (*) (int a, int b)> prime (less); + + // "bool (*less) (int a, int b)" + // wäre eine Variable "less" vom Typ "Zeiger auf eine Funktion, + // die 2 ints erwartet und ein bool zurückgibt". + // Um nur den Typen dieses Zeigers zu bekommen, lassen wir den + // Bezeichner "less" für die Variable weg. + + // Nur "bool *less (int a, int b)" + // wäre eine Funktion "less", die einen Zeiger auf bool zurückgibt + // und 2 ints als Parameter erwartet. + + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +} diff --git a/20220421/sets-9.cpp b/20220421/sets-9.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6ccabde6a7b2c306012d7e679195e172bd46b1ab --- /dev/null +++ b/20220421/sets-9.cpp @@ -0,0 +1,28 @@ +#include <iostream> +#include <set> + +bool less (int a, int b) +{ + return a > b; +} + +int main () +{ + std::set <int, bool * (int a, int b)> prime (less); + + // Falsch + + prime.insert (2); + prime.insert (3); + prime.insert (7); + prime.insert (11); + prime.insert (13); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + prime.insert (5); + for (auto p : prime) + std::cout << p << " "; + std::cout << std::endl; + return 0; +}