Die Standard Template Library (STL) stellt einige Klassentemplates und generische Algorithmen in Gestalt von separaten Funktionstemplates zur Verfügung. Die generischen Algorithmen sind also nicht Elemente der entsprechenden Klassentemplates. Sie sind aber so zusammengestellt, dass die meisten dieser Funktionen auf den meisten der nach den Templates gebildeten Klassen arbeiten können.
In diesem Zusammenhang versuche ich eine Erklärung der Worte "generisch"
und "generische Algorithmen".
Vermutlich wurde dieses Wort als Übersetzung des englischsprachigen generic gewählt.
In einem anderen Zusammenhang - GAL als kleine PLDs, ein von Lattice geschützter Name
(GAL=Generic Array Logic) - hatte ich nach einer geeigneten Übersetzung zum Wort generic
gesucht und irgendwo eine gefunden. Der Sinn dieses Wortes in diesem Zusammenhang bedeutet
soviel wie vielseitig, nicht spezifisch.
Ebendiese Bedeutung passt sehr gut zu den Funktionen, welche die Implementationen der
sogenannten generischen Algorithmen darstellen.
Ansonsten erscheint mir die deutsche Übersetzung eher eine Notlösung - na ja, mit der Zeit
gewöhnt sich der Mensch an (fast) alles.
Es folgt der Versuch, diese Wortschöpfung zu erklären:
Ein "generischer Algorithmus" ist ein Funktionstemplate, deren
Funktionsinstanzen auf verschiedene Datenkollektionen angewendet werden können.
Sowohl die Klassentemplates als auch die generischen Algorithmen gehören dem Namensraum std (von standard) an. Entweder Sie notieren vor einen Bezeichner aus der STL ein "std::" oder Sie verwenden "using namespace std;".
Beispiele:
vector und list sind Klassentemplates der STL.
string ist eine Klasse für Zeichenketten in der STL.
std::vector<double> FPZahlen;
|
Im unteren Beispiel wäre ohne die using-Anweisung folgende Zeile erforderlich: std::list<std::string> Woerterbuch;
|
Sollten Sie bei der Übersetzung eines Quelltextes eine sinngemäße Fehlermeldung erhalten wie "Der Bezeichner ist nicht definiert.", dann liegt dies möglicherweise am fehlenden std.
Informationen zur STL auf neudeutsch (englisch) finden Sie bei