Iterator
-
Hallo,
ich habe 2 unterschiedliche Maps.
map<int, int> test; map<string,string> test2;mit beiden Maps möchte ich das selbe machen (vertauschen von Werten)
Hierfür habe ich eine Extra Funktion geschrieben.map<int,int>::iterator it; vertausche(it) map<string,string>::iteratir it2; vertausche (it2)Meine Frage ist, was muss denn bei der Funktion vertausche(...) stehen, dass ich dieselbe Funktion verwenden kann.
Eigentlich hätte ich ja sowas von wegen vertausche(map<int,int>::iterator it)
geschrieben, aber das würde ja nur für einen Funktionsaufruf klappen. Gibt es da irgendwas Allgemeingültiges?Dankeschön.
-
Ja, Templates. Sehr weitläufiges Thema, kann man nicht in drei Sätzen erklären. Ist aber sehr wichtig für alle etwas fortgeschritteneren C++-Themen, insbesondere ist die ganze STL (Standard Template Library) mit Templates umgesetzt und die benutzt du ja auch schon fleisig. Musst du also nur noch lernen, wie man selber welche schreibt. Suchst du am Besten ein Tutorial oder Buch dafür.
Deine vertausche-Funktion könnte dann so aussehen:
template <class iterator_type> void vertausche (iterator_type &it) { // Mit it arbeiten }konkreten Code kann ich dir nicht geben, weil mir nicht klar ist, wie ein vertausche mit einem Argument gehen soll.
-
Dankeschön. Dann versuche ich das mal
-
Ups, hatte oben noch den Rückgabewert der Funktion vergessen. Habe da jetzt ein void reineditiert.
-
Habe ich auch shcon gemerkt...
Läuft jetzt auch 