C++Guns – RoboBlog

20.04.2018

Filed under: Allgemein — Tags: — Thomas @ 07:04

Die Levenshtein-Distanz (auch Editierdistanz) zwischen zwei Zeichenketten ist die minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln. Die Laufzeit Komplexität liegt bei quadratisch. Wie schnell ist das? Getestet werden 1000 Sequencen mit 200 Zeichen Länge. Die erste Implementierung von Wikipedia lasse ich im Debug Modus laufen und komme […]

11.04.2018

C++ Guns: Return function from function with same signature

Filed under: Allgemein — Tags: — Thomas @ 08:04

Funktionen können Funktionen als Rückgabe Type/Wert haben, solange sie die selbe Signatur vorweisen. Also z.B. alles Binary Funktionen mit Argumenten von Type double.

08.04.2018

Python's 'Nase' + Python's 'Essen'

Filed under: Allgemein — Thomas @ 14:04

Lecker mjam mjam schmatz quetsch schluck satt. Python - what else did you think?

03.04.2018

C++ Guns: sort() mit Visitor

Filed under: Allgemein — Tags: — Thomas @ 11:04

Wen hat es nicht schon einmal gestört, dass std::sort() so transparent arbeitet? Manchmal muss man wissen welche Elemente beim Sortieren wohin verschoben werden. Sozusagen eine Permutation. Manchmal ist es möglich, den zu sortierenden Daten eine ID mitzugeben. Aber oft nicht. Zum Beispiel arbeite ich mit 2D Punkten. Diese liegen natürlich schön dicht gepackt im std::vector, […]

23.03.2018

C++ Guns: concept: force function return type

Filed under: Allgemein — Tags: — Thomas @ 02:03

Das Problem von impliziten Konversionen in C/C++ ist nicht neu. Wenn integer in floats und floats in integer kopiert werden und dabei die Werte der Zahlen verändert werden, kann das in wissenschaftlichen Anwendungen katastrophale Auswirkungen haben. Es müssen verschiedene Szenarien beachtet werden. So ist z.b. das kopieren eines 32bit integer in ein 64bit float kein […]

15.03.2018

C++ Guns: Quick Q: What is a non-trivial constructor in C++?

Filed under: Allgemein — Tags: — Thomas @ 09:03

https://isocpp.org/blog/2018/03/quick-q-what-is-a-non-trivial-constructor-in-cpp Super und kurze Zusammenfassung was triviale Konstruktoren sind und wie man sie bekommt. Es zeigt sich, dass man für reine Datentypen besser auf viele lustige c++ Features verzichten soll. Wenn man einfach _garnichts_ programmiert und nur seine member typen deklariert, ja noch nicht mal default initialisieren, steht man am besten da. Auf einmal wird […]

27.02.2018

C++ Guns: Templated class specialization where template argument is a template

Filed under: Allgemein — Tags: — Thomas @ 16:02

Okay das ist mit Abstand das krasseste was ich seit langem mit Templates gemacht habe, obwohl die Aufgabe doch recht klar und einfach ist. Der Code ist von der Syntax her auch noch irgendwo okay. Naja, vllt. auch nicht. Ich habe meine Experimentelle Graph Klasse mit entsprechenden Iteratoren. Datencontainer und Algorithmus trennen und mit Iteratoren […]

11.02.2018

C++ Guns: std::chrono::duration to nice human readable text

Filed under: Allgemein — Tags: — Thomas @ 13:02

std::chrono::duration stellt eine Zeitspanne dar. Zum Beispiel wie lange ein Programm schon läuft. Eine Textausgabe in Sekunde, Minuten, Stunden u.s.w wäre also schön. Die Umrechnung von std::chrono::duration nach Stunden ist super einfach. Die Hauptarbeit übernimmt std::chrono::duration_cast und vordefinierte Werte für Sekunden, Minunten und Stunden gibt es schon. Die Erweiterung für Tage ist entsprechend einfach.

08.02.2018

line 1: #!/bin/bash: No such file or directory

Filed under: Allgemein — Tags: — Thomas @ 12:02

$ ./test.sh ./test.sh: line 1: #!/bin/bash: No such file or directory $ cat test.sh #!/bin/bash $ ll /bin/bash -rwxr-xr-x 1 root root 1.1M May 15 2017 /bin/bash WTF?! Wo ist der Fehler? Ein Blick mit dem hexeditor zeigt seltsame Zeichen am Dateianfang, die im Texteditor nicht sichtbar sind. $ head -n 1 test.sh | hexdump […]

05.02.2018

C++ Guns: Generic Data Type Design Pattern - Teil 4

Filed under: Allgemein — Tags: — Thomas @ 16:02

Die Idee, für User defined Datentypen jede Variable in einem std::tuple oder std::array zu halten, kann nicht überall gut sein. Für jede Variable benötigt man noch eine getter Funktion um der Variablen einen Namen und damit Semantik zu geben. Ich hatte in den letzten Kapitel noch erwähnt, dass es viel Sinn macht, diese Funktionen als […]

Older Posts »

Powered by WordPress