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

28.04.2014, 10:15

Oh, also stolze 100 Bytes statt 50? Stimmt, das ist natürlich ein Grund ihn nicht zu verwenden... entweder braucht man's dynamisch oder nicht.
Übrigens verschenken auch Klassen und Strukturen jede Menge Speicher durch Alignment der einzelnen Member... :rolleyes:
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]

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

12

28.04.2014, 10:23

Geht nicht um Klassen und pedantische Speicherausnutzung. Ich wollte eig. nur darauf hinweisen. Wer weiß ob er das nicht einmal für ein extrem großes Array genauso stumpf sieht und direkt ein std::vector anlegt. Man kann nie zu viele Infos haben. ;)
Man kommt sich in diesem Forum schon so vor, als dürfte man keinen Pieps mehr sagen ohne gleich einen Seitenhieb verpasst zu bekommen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

28.04.2014, 10:25

Du darfst das natürlich gern anbringen. Es wirkte allerdings so als ob es ein Grund wäre kein std::vector zu verwenden. Das wäre natürlich eher kontra-produktiv.
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]

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

14

28.04.2014, 10:29

Du darfst das natürlich gern anbringen. Es wirkte allerdings so als ob es ein Grund wäre kein std::vector zu verwenden. Das wäre natürlich eher kontra-produktiv.

Nein war nur ein gut gemeinter Ratschlag den man bei der Benutzung von std::vector im Hinterkopf haben sollte. Auch wenn es in diesem und vielen anderen Fällen natürlich vernachlässigbar ist. ;) Sei nächstes mal etwas netter oder ich verrate euren unfertigen Link über Quallenwissen. :P
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Encounter

Frischling

  • »Encounter« ist der Autor dieses Themas

Beiträge: 22

Wohnort: Aachen

  • Private Nachricht senden

15

28.04.2014, 13:50

Hui hier gehts ja ein wenig hin und her :D

Ein vector habe ich hier ohnehin nicht gebraucht und deswegen nicht verwendet, da es in diesem Fall statisch sein sollte.
Ich finde den Hinweis mit der Speicherplatzbelegung aber richtig, auch wenn wir hier von geringen Größen sprechen kann sich sowas schnell summieren bei komplexen Projekten (Was zweifelsfrei auch für viele andere Stellen im Code gilt).
Sollte also jemand (aus welchem Grund auch immer) jedesmal einen vector verwenden wäre das nicht gut.


Die beiden Sätze widersprechen sind allerdings stark. ;) Zudem ist der zweite Satz Unsinn. Richtig wäre wohl gewesen: "Ich wusste nur nicht, dass man auch ein Array von Strukturen machen kann."
std::array hat den Vorteil, dass er sicher ist und die Größe immer bekannt. Der Nachteil ist, dass die Größe zur Compile-Zeit feststehen muss. std::vector ist da flexibler.


Ich sehe nicht wo sich die Sätze widersprechen sollten. Ob die Formulierung des zweiten Satzes vielleicht nicht 100 % präzise ist sei mal dahingestellt.

Auf jedenfall ist ja bereits auch alles geklärt 8)
Ich war hier und hab ALLES gesehen!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

28.04.2014, 13:59

1) Sich mit Arrays aus zu kennen heißt auch zu wissen welche Datentypen für einen Array verwendbar sind. Ist dies nicht der Fall, liegt eben ein Widerspruch vor.
2) Der Array ist eben keine Struktur Instanz, sondern Du hast viele Instanzen eines Struktur-Typs als Array.

Terminologie ist wichtig in der IT. Sehr wichtig.
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]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

17

28.04.2014, 14:11

Für den Zweck von dynamischen Arrays ohne die nervigen Nachteile eines "std::vector" war für C++14 "std::dynarray" geplant. Leider wurde das wieder verschoben. Solange muss man am Besten zb. "std::unique_ptr" mit einem Arraytyp nutzen. Wenn es nicht Kopierbar sein muss, ein einfacher Ersatz.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

28.04.2014, 14:26

Leider wurde das wieder verschoben. Solange muss man am Besten zb. "std::unique_ptr" mit einem Arraytyp nutzen.
Womit man dann aber auch wieder alle Nachteile eines normalen Arrays hat - Unsicheren Zugriff, unbekannte Größe, nicht wirklich dynamisch.
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]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

19

28.04.2014, 14:39

Genauso dynamisch wie notwendig ist. Für in der Größe dynamische Arrays gibt es ja bereits den "std::vector".
Außerdem ist es nicht unsicherer als ein "std::vector". Speicherzugriffe sind in C++ immer "unsicher", außer man benutzt die "at"-Methode, aber das tut ohnehin kaum jemand, zumindest habe ich in der Praxis noch nirgends gesehen. Deallokation ist in einem Smart-Pointer auch grundsätzlich so sicher wie möglich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (28.04.2014, 15:22)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

28.04.2014, 14:46

Die unbekannte Größe bleibt, die immer separat gepflegt werden muss, selbst wenn man sich den Rest schön reden kann.
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]

Werbeanzeige