2017-04-19 1 views
2

Gibt es in C++ eine Möglichkeit, ein Array von intelligenten Zeigern zu schreiben, die automatisch die angezeigten Werte mit ihrem Index im Array aktualisieren? Die angegebenen Werte enthalten ein Element zum Speichern des Index, ähnlich wie bei einem intrusiven Refcount.Ist es möglich, ein Array von intelligenten Zeigern zu haben, die ihre Werte automatisch mit ihrem Index aktualisiert?

Ich bin daran interessiert, einen Heap mit aktualisierbaren Prioritäten zu schreiben. Wenn die Werte im Heap immer aktualisiert werden, um auf ihren Index innerhalb des Heapspeichers zu zeigen, ohne spezielle Kenntnisse innerhalb des Heapalgorithmus, wäre es leicht, dieser Verbindung beim Ändern der Wertpriorität wieder in den Heap zu folgen. Wenn Sie die Position des geänderten Elements kennen, kann die Heap-Invariante schnell wiederhergestellt werden.

+1

Ich denke, Sie müssten den Heap (d. H. Das Array) in einen containerartigen Typ kapseln, der diese Aktualisierung für Sie jedes Mal durchführt, wenn er den Heap ändert. –

+0

Natürlich ist es möglich. Sie müssen nur den Smart Pointer dafür schreiben. Sollte eine relativ einfache Aufgabe sein. – cmaster

Antwort

0

Dies ist mein Versuch einer grundlegenden Implementierung. Ich würde es vorziehen, die Referenz Container auf das globale Array zu parametrisieren, ohne Instanzen größer als ein Zeiger zu machen, und es wäre gut, die Sicherheit zu verbessern. Es wäre nützlicher, wenn es auch ein Random-Access-Iterator wäre.

+0

Auch das scheint nicht gültig zu sein C++ 11 – joeforker

Verwandte Themen