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

bepo

Frischling

  • »bepo« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Bayern

Beruf: Schüler

  • Private Nachricht senden

1

11.10.2004, 17:49

std::vector an angegebenen Ort

Ich möchte einen std::vektor an einer bestimmten Stelle im Speicher erstellen. Wie geht das? Kann mann auch die einzelnen Einträge an einen bestimmten Ort erstellen?

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

11.10.2004, 18:24

Was ist denn Dein eigentliches Problem? Ich wette, es gibt eine Lösung ohne "feste" Adresse.
"Games are algorithmic entertainment."

Anonymous

unregistriert

3

11.10.2004, 18:52

Ich möchte zum Beispiel Texturestruktur erstellen, die ich dann in einen Vektor einfüge. Da ich beim Programmstart den benötigten Speicher allokiere(funktioniert wie ein Heap), möchte ich den Vektor in den Speicher rein haben. Allerdings weiß ich nicht, wie ich das machen soll.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

11.10.2004, 19:46

Achso, ok.
Wie allokierst Du, das, mit reserve?
Wenn ja, sieh Dir mir das Beispiel dazu aus der MSVC Doku an.
Kurz gesagt, wenn z.B. 100 Einträge reserviert sind, können immer noch weniger in benutzung sein.

Du solltest wahrscheinlich push_back benutzen.
"Games are algorithmic entertainment."

bepo

Frischling

  • »bepo« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Bayern

Beruf: Schüler

  • Private Nachricht senden

5

12.10.2004, 16:09

Ich hab jetzt mit reserve() den std::vector auf 100 gesetzt. Der Vektor wird an einer von mir bereitgestellten Adresse erstellt. Was aber wenn ich mehr als 100 Einträge benötige, da auf meinem Heap nach dem Vektor Daten sind.
Und ist ein Eintrag so groß wie der Datentyp der da drinne ist, oder hat er eine andere Größe?

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

6

12.10.2004, 20:29

Wird ein std::vector überhaupt linear in einem Speicherbereich aufgebaut oder gibt's da "Querverweise" wie in einer Liste?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

bepo

Frischling

  • »bepo« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Bayern

Beruf: Schüler

  • Private Nachricht senden

7

12.10.2004, 20:36

Ich habe jetzt ein paar Versuche hinter mir und habe festgestellt, dass alle (egal wie viele Einträge) std::vector eine Größe von 16 Bytes haben. Das heißt, dass sich mein Probem erledigt hat.
Er müssten eigentlich wie eine Liste mit Zeigern auf das jeweils nächste Element aufgebaut sein.

8

16.10.2004, 19:43

Zitat

Ich möchte einen std::vektor an einer bestimmten Stelle im Speicher erstellen. Wie geht das?
Nein das geht nicht. Das kann auch nicht gehen, wegen der Architektur eines OS das Multithreading unterstützt.

Zitat

Wird ein std::vector überhaupt linear in einem Speicherbereich aufgebaut oder gibt's da "Querverweise" wie in einer Liste?

Zitat

Ich habe jetzt ein paar Versuche hinter mir und habe festgestellt, dass alle (egal wie viele Einträge) std::vector eine Größe von 16 Bytes haben. Das heißt, dass sich mein Probem erledigt hat.
Er müssten eigentlich wie eine Liste mit Zeigern auf das jeweils nächste Element aufgebaut sein.
Bitte Doku lesen.... std::vector muss nämlich gerade nicht die Werte in einer Verketteten List speichern. Es ist ein Vektor und keine Liste ;) Dafür ist nämlich std::list zuständig.

Wenn dein Typ 16Byte groß ist, ist es klar das jeder Eintrag au 16Byte groß ist. Das ist nun einmal die Eigenschaft eines Vektors. Wenn alle 100 Einträge voll sind, spielt das au keine Rolle. Dann wird das Array eben vergrößert.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige