Quiz
Fragen
- Welche(n) Vorteil(e) hat der Stack gegenüber dem Heap?
- Welche(n) Vorteil(e) hat der Heap gegenüber dem Stack?
- Was ist ein Stack Overflow (nicht die Webseite)?
- Was passiert bei der Zuweisung
let b = a;
, wenna
Owner von Stack-Speicher ist? - Was passiert bei der Zuweisung
let b = a;
, wenna
Owner von Stack- und Heap-Speicher ist? - Warum kann der Wert einer Variable nicht ausschließlich im Heap-Speicher leben?
- Warum kann die Methode
fn mymethod(self){}
des Struktutypenstruct MyStruct;
nicht zwei Mal auf der gleichen Instanz aufgerufen werden? - Wie kann die Signatur von
mymethod
verändern, um mehrmaliges Aufrufen zu ermöglichen? - Verfügt die Programmiersprache C über das Konzept der Lifetimes?
- Welche Möglichkeiten gibt es, den Compiler zum Übersetzen der folgenden Funktion zu bringen?
#![allow(unused)] fn main() { fn f(s1: &str, s2: &str) -> &str { &"" } }
- Warum hat bei der vorangegangen Funktion Lifetime-Elision nicht funktioniert?
Aufgabe
Schreibe eine Funktion, die das Skalarprodukt zwischen 2 dünnbesetzten Vektoren \( x, y\in\mathbb R^n \) berechnet. Hinweise:
- Das Skalarprodukt zwischen \( x \) und \( y \) ist gegeben durch \( \sum_{i=1}^n x_iy_i \).
- Ein Vektor heißt dünnbesetzt (engl. sparse), wenn sehr viele seiner Elemente 0 sind.
- Wie kann man einen dünnbesetzten Vektor effizient im Speicher halten?
Teste die Funktion für ein beliebiges paar Vektoren und \( n=10^{10} \).