Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

liebe leute

ich hab eine template klasse des typs struktur<T>.

im main programm hab ich nun eine

set<struktur<string>, greater<struktur<string> > setW erzeugt und möchte die einer methode der template klasse übergeben. ich krieg das einfach nicht hin, was muss ich denn für eine signatur bei der funktion verwenden?

funktion(set<struktur<T>, greater<struktur<T> >&) funktioniert jedenfalls nicht :confused:

kann mir jemand rat geben? wäre sehr, sehr dankbar!

nova

Geschrieben

Entweder nimmst Du die "ausformulierte Version":

typ funktion(set<struktur<string>, greater<struktur<string> >&);

Oder du musst, wenn du unterschiedliche Templateargumente verwenden willst, die Funktion auch als Template deklarieren:

template<class T> typ funktion(set<struktur<T>, greater<struktur<T> >&);

Geschrieben

danke für die antwort!

dummerweise, hab ich jetzt ein anderes problem: ich möchte die set direkt nach jeder eingabe mit setW.insert(wert) auffüllen.

wenn ich aber die set ausgeben will, mit einer schleife

for(j=setW.begin(); j != setW.end(); j++)

print(*j)

wird immer nur der erste wert ausgegeben.

:confused: :confused: wieso das? kann man mit insert, nicht gleich die daten in der richtigen reihenfolge einfügen lassen?

Geschrieben

Ich würde setW.end() einmal vorher bestimmen, und nicht j++, sondern ++j schreiben, aber das sollte sich nur auf die Performance, nicht auf das Ergebnis auswirken.

Wenn das der ganze Code der Schleife ist, und nur ein Element ausgegeben wird, dann hat das Set nur ein Element. Wahrscheinlich liegt der Fehler an einer anderen Stelle. Zeig doch bitte mal den Minimalcode, mit dem man den Fehler reproduzieren kann.

Das hier funktioniert:

#include <iostream>
#include <string>
#include <set>
using namespace std;

template<class T>
void foo( set<T>& s )
{
set<T>::const_iterator i = s.begin(), iend = s.end();
for( ;i != iend; ++i )
cout << *i << endl;;
}

int main()
{
set<string> s;
s.insert("blubb");
s.insert("bla");
foo(s);
}
[/CODE]

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...