Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

31.01.2015, 20:52

Hmm, wie kann das sein, wenn Elemente nie kopiert werden müssen und der Speicher nicht linear zusammenhängen ist? Je nach Größe der Deque werden es doch mehr und mehr Teilstücke.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

12

31.01.2015, 20:58

Soweit ich mich erinnere: Der Speicher einer deque ist stückweise linear, nicht insgesamt linear. Die Zugriffszeiten sind daher O(1) in dem Sinne, dass es zuerst anhand des Index irgendwo in ein Array aus Segmenten reingreift und dann den Index innerhalb dieses Blockes auflöst. Quasi eine Indirektionsstufe mehr als beim std::vector, und wegen der separaten Allokation eines neuen Segments aller x Hinzufügungen auch nicht so gut für die Cache-Kohärenz, aber dafür halt amortisiert O(1) bei Front-Hinzufügungen. Und es bedeutet halt auch, dass ein einmal abgelegtes Element auch eine feste Speicheradresse hat, solange niemand was in der Mitte einfügt oder rauslöscht.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

13

31.01.2015, 21:00

Der Content wird in mehreren Arrays gespeichert, wies auf cppref steht. Der §\mathcal{O}\left(1\right)§-"Trick" ist nun, ein dynamisches Array zu haben, welches Zeiger auf jedem dieser Arrays speichert.
EDIT: Habs sogar auf Wikipedia gefunden! :D

MfG
Check

Werbeanzeige