c++: vector as new type in -std=c++11

Eine sichere Alternative zum Array!

#include <vector>
std::vector <int> messungen = { 12, 10, 11, 12, 10 };
std::vector <string> klasse_1b = { "eva", "tim", "lin", "noe" };
std::vecrot <Class> token_table = { "n", 5, "+", 2, "*", 4 };


Wertzuweisung

messungen[1] = 11;
token_table[2] = { "*", 3 }

 

Vektor per Referenz übergeben
Damit nicht alle Werte des Vektors übergeben werden müssen, wird nur die Adresse übergeben (siehe Pointer).

void print( const vektor <int>& messungen){
.   // code
}

Zur Referenzübergabe gehört sowohl das & (Adresse mitgeben).

Mit 0 oder leeren Strings initialisieren

std::vector <int> messungen( 5 );
std::vector <string> klasse_1b( 4 );

Achtung: geht nur, wenn man mit -std=c++11 kompiliert.

for eines Vektors

for (int i : messungen){
.    (if i = 5 ) {
.        //
.     }
}

Das verkürzte For für einen Vektor gibt zu Beginn den Datentyp an und nach dem Doppelpunkt die Länge des Vekorts. Dann geht das For durch jedes Elements des Vektors.

for eines Vektors aus einem Klassen-Datentyp

for (Token t: token_table){
.    (if t.nummer == 5) {
.        //
.     }
}

Wieder zuerst der Datentyp (Token) und dann den Vektor.
Bei der interenen Auswertung, muss gesagt werden, auf welchen Variabelntyp der Klasse sich die Auswertung bezieht. (Bei der Klasse Token hat jeder Index zwei Variablen: string operation und int nummer.)

 

Funktionen für Vektorbearbeitung

int anzahl = messungen.size();
messungen.sort();


Daten in Vector einlesen

vector <int> data;
int current_element;

while ( cin ){
    cin >> current_element
     data.push_back ( current_element );
}

– Die Funktion push_back() hängt neue Daten hinten an.
– Sie vergrössert die Vektorgrösse damit immer um 1

 

c++: Ausgabe Konsole: cout <<

Allgemein cout und cin
– Aufgrund von Operator Overloading kann cout  alle Datentypen ausgeben
Standardformat für Zahlen ist hex
#include <iostream> ist notwendig
– Die Eingabe über Konsole wird wortweise  in cin gespeichert.
– Gibt man mehrere Wörter (mit Leerschlag getrennt) ein, so wird
.  wenn cin nur 1 Varibale folgt, nur das erste Wort übernommen. Ansonsten
.  braucht es nach cin mehrere Variablen.
Wert = 0 wird nicht ausgegeben. Es erscheint ein Loch.
Es scheint, wie wenn kein Wert da ist.

Ausgabe dezimal

std::cout << std::dec << (int) var_1 << std::endl;
std::cout << std::dec << (int) treeMemy[0] << std::endl;


Ausgabe bitwise
Es braucht zwei Schritte. Typcast vor dem Output direkt funktioniert nicht.

char var_1 = 5;
std::bitset<8> bits(var_1);   /funktion vor output
std::cout << bits << std::endl;

– bitset muss als Library eingefügt werden
#indlucde <bitset >

Ausgabe char
– Char-Werte werden teilweise wie die 0-Werte nur mit einem Loch ausgegeben. Die Konversion zum Datentyp short hilft, dass man die Werte auf der Konsole sieht.

std::cout << (short) bitReadOut << std::endl;

Führende Nullen anzeigen

std::cout << setfill('0') << setw(5) << var_2<< std::endl;

-setw() sagt, wie viele Stellen man insgesamt ausdruckt

.

 

 

Python to exe

Programm         pyinstaller      fasst python pakete zusammen zu einem executable
Installation:       git clone   https://github.com/pyinstaller/pyinstaller

Von Python zu Exe
pyinstaller  test.py                     Befehl ausführen
.                                                         Es wird automatisch ein Ordner dist/  bebildet,
.                                                         in dem das exe liegt

RSA-Key erstellen und verwalten

Stärkere Sicherheit als ein Passwort bieten die RSA-Keys.

Keys erstellen
Ein gute Einleitung bietet Github unter Profile/Settings/SSH-Key:
ssh_github_help


Public key weitergeben

Dem externen Programm mit add id_rsa.pub  den Key zufügen.

Ablegeort der Keys
In der versteckten und passwort-geschützten Datei .ssh werden die Keys abgelgt.
– Die zwei Keys sollten nicht auf dem Rechner liegen, bzw. falls doch, dann nur verschlüsselt. Sie auf einem Stick oder anderen Speichermedium abgelegt werden.

Zweiter Key
Hat man einen weiteren Key, kann man diesen im Programm als zusätzlichen Key zufügen. Es funktioniert nur, wenn man den private Key auf dem Rechner abgelegt hat.
Man kann den ersten Key entweder löschen oder stehen lassen.

Das Programm Git

Das Programm
– Git wurde von Linus Torvalds entworfen.
– Einziges Ziel von Git ist das Verwalten der Versionierung.
– löscht man die Git-Datei, löscht man nur die Versionierung. Die Dateien bleiben
– Git kann lokal gebraucht werden, wie auch über eine Plattform (z.B. Github).
– Git hat nichts mit Github zu tun

Versionierung lokal anlegen

git init
git add <Datei oder Ordner>

Versionierung remote anlegen

git clone git@github.com/<user>/projekt


Vergleich mit svn

– svn bedingt einen Server
– svn: Änderungen liegen auf dem Server <-> git: Änderungen lokal auf .git