K
SonjaZ schrieb:
typedef pair<Key, Element> Item;
vector<Item> heap;
Was ist Key und was ist Element?
Ich rate: Key=int und Element=std::string
SonjaZ schrieb:
Wenn ich sowas habe:
return heap[1].second;
und die heaps so gefüllt werden:
heap.insertItem(3, "apple");
heap ist nur ein Name. In diesem Fall bezieht sich der Name auf ein vector<Item>-Objekt, wobei Item synonym zu pair<Key,Element> ist. Mit anderen Worten, der Vektor speichert Key/Element-Paare. Ein solcher Vektor bietet aber keine Funktion mit Namen "insertItem" an.
Das Einfügen könnte so aussehen:
heap.insert(pos,Item(3,"apple"));
wobei pos ein Iterator ist, der die Einfüge-Position angibt.
SonjaZ schrieb:
Dann ist heap[1].first = 3 und heap[1].second = "apple", oder?
Diese Frage kann man Dir erst beantworten, wenn Du kompilierbaren Code zeigst. Nebenbei: Der Index für das erste Element eines Vektors ist 0.
Schau in Dein C++ Lehrbuch oder auch auf der Seite http://www.cplusplus.com/reference/ nach, wie Vektoren (std::vector) und Pair (std::pair) funktioniert bzw benutzbar ist. Das Klassen-Template vector wird in der Kopfdatei <header> und pair wird in <utility> definiert.
Ja, ein pair-Objekt besitzt zwei Datenelemente: first und second.
So sieht ein kompilierbares Beispiel aus:
#include <iostream>
#include <ostream>
#include <string>
#include <utility>
#include <vector>
using namespace std;
typedef int Key;
typedef string Element;
typedef pair<Key,Element> Item;
int main()
{
vector<Item> heap;
heap.push_back(Item(42,"forty-two"));
cout << heap[0].first << endl;
cout << heap[0].second << endl;
}