Template-Problem [SOLVED]
-
Hallo zusammen,
ich möchte mir ein Template für die Ausgabe von Collections machen.
template<class T> void printList(std::ostream& s, const std::vector<T>& vec, const char* del){ bool first = true; for (std::vector<T>::const_iterator it = vec.begin(); it != vec.end(); ++it) { if(!first) s << del; else first = false; s << *it; } }Mit std:vector funktioniert das auch ganz gut.
Krieg ich das auch irgendwie hin, dass es für alle Klassen mit const_iterator
funktioniert?So geht es z. B. nicht:
template<class cT <class T> > void printList(std::ostream& s, const cT& vec, const char* del); template<class cT = std::vector, class T> void printList(std::ostream& s, const cT<T>& vec, const char* del);Gibt es ne Möglichkeit?
Gruß,
CSpille
-
Warum einfach, wenn's auch kompliziert geht?
template<class CT> void printList(std::ostream& s, const CT& vec, const char* del){ bool first = true; for (typename CT::const_iterator it = vec.begin(); it != vec.end(); ++it) { if(!first) s << del; else first = false; s << *it; } }Das schluckt alle STL-artigen Containerklassen als Datenquelle. (sprich: alles, was einen const_iterator (OutIt) und die Methoden begin() und end() bereitstellt)
PS: den letzten Parameter würde ich als string übergeben.
-
Oh man...
wie dumm...
Danke CStoll!!!
-
Hi,
also ich steh' ja auf den "copy-Trick"
std::vector<int> vec; copy(vec.begin(), vec.end(), std::ostream_iterator<int>(cout, " ") );Ich wüsste nicht, wie man das mit einem eigenen template noch verkürzen oder verallgemeinern könnte...
Gruß,
Simon2.
-
Hey Simon2...
Der Copy-Trick ist wirklich cool

-
CSpille schrieb:
Hey Simon2...
Der Copy-Trick ist wirklich cool

... ist auch nicht von mir.

Gruß,
Simon2.