So speichern Sie Objekte für die spätere Verwendung und machen sie durchsuchbar

9

Im Moment benutze ich einen Vektor, um jedes Mal Zeiger auf das Objekt zu speichern, aber das fühlt sich ein bisschen albern an. Es gibt wahrscheinlich einen besseren Weg, aber ich habe es nicht gefunden.

%Vor%

Das Problem :

  1. Wenn ich ein bestimmtes Datum abrufen möchte, muss ich über alle Elemente im Vektor gehen, um zu sehen, ob RecPaymentsStack.stackDate mit dem vom Benutzer angeforderten Datum übereinstimmt.
  2. Der RecPaymentStack ist im Moment völlig nutzlos, weil das, was ich tun sollte , beim Hinzufügen eines neuen Elements überprüft, ob ein "RecPaymentStack.stackDate" bereits für das neue Element erstellt wurde Date-Eigenschaft, und wenn dem so ist, fügen Sie den neuen Zeiger zu "RecPayments" zu einem Array von Zeigern innerhalb des Objekts "RecPaymentStack" hinzu. Aber wie?

Ich mache die Dinge wahrscheinlich unnötigerweise komplizierter (etwas, was ich viel tue), also wäre eine Erklärung dafür, wie etwas getan werden sollte , sehr nett.

Detaillierte Information: (falls ich zu vage war)

Das folgende Beispiel soll einem Kalender ähneln, der bestimmte Elemente (RecPayments) enthalten kann und diese Elemente werden nach ihrem Datum (RecPaymentsStack) gruppiert.

%Vor%

Und hier ist, wie ich sie gerade abspeichere

%Vor%

Um die Elemente für ein bestimmtes Datum abzurufen, gehe ich im Moment über alle Zeiger im Vektor, um zu sehen, ob die Eigenschaft "stackDate" mit dem angeforderten Datum übereinstimmt, und wenn ja, verwende ich den " thePaymentItem "-Eigenschaft, um das tatsächliche Element anzuzeigen.

%Vor%

3 Probleme damit:

  1. Über alle Elemente im Vektor zu gehen ist höchst ineffizient, wenn ich nur brauche ein paar Zeiger
  2. Der RecPaymentStack ist im Moment völlig nutzlos, weil das, was ich tun sollte , beim Hinzufügen eines neuen Elements überprüft, ob ein "RecPaymentStack.stackDate" bereits für das neue Element erstellt wurde Date-Eigenschaft, und wenn dem so ist, fügen Sie den neuen Zeiger zu "RecPayments" zu einem Array von Zeigern innerhalb des Objekts "RecPaymentStack" hinzu. Aber wie?
  3. All das fühlt sich anfangs extrem dumm an. Es gibt wahrscheinlich eine viel einfachere / professionellere Art das zu tun, aber ich kann nicht herausfinden was, wahrscheinlich weil ich immer noch wie ein PHPer denke.

Die allgemeine Idee hier ist, dass ich am Ende etwas (dummes Beispiel) mache.

%Vor%

Das würde im Grunde alle eindeutigen "RecPaymentsStack" -Objekte (einzigartig bestimmt durch seine "Date" -Eigenschaft) und für jedes Datum würde es dann "Kinder" von der RecPayments-Struktur zeigen.

Und es muss eine Möglichkeit geben, nach einem bestimmten Datum zu suchen, ohne über die alle verfügbaren zu gehen.

    
natli 04.12.2011, 22:19
quelle

2 Antworten

2

Anstatt einen Vektor zur Verwaltung Ihrer Artikel zu verwenden, sollten Sie Ihre RecPaymentsStack -Instanz durch eine std::multimap . Der Schlüsseltyp ist Ihre Date -Struktur, der Werttyp ist RecPayments (was ich in die Singularform RecPayment ändern würde). Kleines Beispiel (ungetestet):

%Vor%     
Niklas B. 04.12.2011, 22:27
quelle
1

Ich könnte es so gestalten - das ist nur eine lose Idee, Details sollten entsprechend Ihren Anforderungen angepasst werden:

%Vor%

Jetzt können Sie Elemente einfügen:

%Vor%     
Kerrek SB 04.12.2011 22:37
quelle

Tags und Links