wie insert-paar<int, int> in die Warteschlange?
ich habe Probleme beim einfügen von Objekten des Typs pair<int, int>
in einer Warteschlange. ich erhalte eine seltsame Fehlermeldung, und ich habe keine Ahnung, wie man über die Festsetzung es. Kann jemand helfen? der folgende code ist der code für die Methode, gefolgt von den Fehlermeldungen. Die ersten zwei Fehler sind für die insert -, die Letzte ist für die Nutzung der operator=
, helfen Sie mit, dass würde auch geschätzt werden. Danke!
pair<int,int>* bfSpanningTree(int theVertex)
{
queue< pair<int,int> > pairq;
queue<int> nodeq;
if(linkedAdjacencyList[theVertex]->value == theVertex && linkedAdjacencyList[theVertex]->adj != NULL)
{
Node* whereto;
whereto = linkedAdjacencyList[theVertex]->adj;
while(whereto->adj != NULL)
{
pairq.push(pair< &whereto->value, &whereto->adj->value >);
nodeq.push(whereto->value);
whereto = whereto->adj;
}
while(!nodeq.empty())
{
whereto = linkedAdjacencyList[theVertex]->adj;
while(whereto->adj != NULL)
{
pairq.push(pair<&whereto->value, &whereto->adj->value>);
whereto = whereto->adj;
}
}
}
int i = 0;
pair<int,int>* retVal;
pair<int,int> tree[pairq.size()];
while(!pairq.empty())
{
tree[i] = pairq.pop();
i++;
}
retVal = tree;
return retVal;
}
~UndirectedGraph()
{
for (int i = 0; i < numVerticies; i++)
delete[] linkedAdjacencyList[i];
}
Fehler:
hw8.h:181: Fehler: falsche Anzahl von template-Argumente (1, 2)
/usr/include/c++/4.4/bits/stl_pair.h:67: Fehler: vorgesehen für
‘template<class _T1, class _T2> struct std::pair’
hw8.h:190: Fehler: falsche Anzahl von template-Argumente (1, 2)
/usr/include/c++/4.4/bits/stl_pair.h:67: Fehler: vorgesehen für
‘template<class _T1, class _T2> struct std::pair’
hw8.h:200: Fehler: keine übereinstimmung für
‘operator=’
im‘tree[i] = pairq.std::queue<_Tp, _Sequence>::pop [with _Tp = std::pair<int, int>, _Sequence = std::deque<std::pair<int, int>, std::allocator<std::pair<int, int> > >]()’
/usr/include/c++/4.4/bits/stl_pair.h:68: Anmerkung: Kandidaten sind:
std::pair<int, int>& std::pair<int, int>::operator=(const std::pair<int, int>&)
- Welche Codezeile ist bei
hw8.h
Linie 181?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zeilen code in etwa so:
sollte wohl so Aussehen:
oder wenn die
value
Mitglieder sind nicht der Typint
:Schließlich
queue::pop()
nichts zurückgibt, so dass Sie wahrscheinlich wollen:Werfen Sie einen Blick auf make_pair(). Warteschlange::pop() nicht das erste element. Sie benötigen die folgenden:
Können Sie nicht machen Sie eine Vorlage von der eigentlichen Objekt-Instanziierungen wie Sie getan haben ... Sie müssen die DATENTYPEN für die Objekte instanziiert werden, indem die template-Funktion (in diesem Fall der Konstruktor).
Also zum Beispiel, Sie können eine pair-Objekt mit einem Konstruktor wie:
pair<int, int>(whereto->value, whereto->adj->value)
oder Sie können ein paar mit der utility-Funktion
make_pair()
wie Michael.Aber wenn du gehst, um den Konstruktor verwenden, müssen Sie Sie irgendwo deklarieren Sie die Typen, die als Ersatz für die Typen
T1
undT2
in der Konstruktor-Deklaration, d.h.,Getan wird, indem er erklärt, das Objekt mit dem template-Argumente für das gewünschte Objekt-Typen (ich.e, für ein paar
int
Objekte, die Sie verwenden würdenpair<int, int>
), und dann Aufruf der eigentlichen Objekt-member-Funktion mit Objekten dieser Typen (in deinem Fall wäre es einen Konstruktor für die Klassepair
).Gibt es ein paar Dinge, die sich hier auf den ersten Blick können Sie die Knoten-Klasse/struct-definition?