lerner schrieb:
> //Fragen:
> //Kann man PrintIntVector so umschreiben, dass es ein PrintIntContainer
> ist, also merkt wenn es z.B. ein deque wäre?
> //Kann man PrintIntVector (oder PrintIntContainer) so schreiben, dass es
> auch für double oder andere Typen geht?
Beides läßt sich machen, indem man aus der Funktion ein Template macht.
Übrigens: Da du den Container in der Funktion nicht änderst, sollte die
Referenz darauf const sein und mit einem const_iterator durchlaufen
werden. In C wird const sehr lax gehandhabt. In C++ ist das anders,
daher solltest du immer auf const-korrekte Programmierung achten, d.h.
alles const machen, was nicht verändert wird.
So würde die Funktion als Template aussehen: (ungetestet)
[C]
template <typename Container>
void PrintContainer(const Container& cont)
{
for(Container::const_iterator cont_it =cont.begin(); cont_it !=
cont.end(); cont_it++)
{
std::cout << *cont_it << " ";
}
std::cout << std::endl;
}
> std::vector<double> cont2; //So wenn ich da jetzt was reinlege
> und auch über eine Print Funktion ausgeben möchte?
> //std_vector<my_class> cont3; //Oder gar da?? Geht das überhaupt?
Ja das geht, wenn du für my_class einen operator<< definierst, in dem
festgelegt wird, wie dein Objekt ausgegeben werden soll.