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

1

27.02.2022, 18:46

Dictionary begrenzen?

Hallo zusammen,

Gibt es eine Möglichkeit ein Dictionary zu begrenzen? Bei einem Array wird der Platz von vornherein angegeben, int[5] z.B.
Für ein Dictionary habe ich bisher nichts gefunden.
In dem Methoden selbst oder im Netz bin ich bis jetzt auch nicht wirklich fündig geworden.

Gewinde :)

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

27.02.2022, 19:55

Welche Programmiersprache?

Allgemein gesprochen: die meisten Dictionaries müssten ne Methode size() oder len(dict) oder sowas anbieten. Damit kannst Du vorher prüfen, ob Deine gewählte Anzahl erreicht ist oder nicht. Was Du dann aber mit Deinem Eintrag und dem Dict machen willst, musst Du Dir selbst überlegen.
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.

Jonathan

Community-Fossil

  • Private Nachricht senden

3

28.02.2022, 09:27

Warum willst du das überhaupt tun?

Bei einem Array gibt man die Größe vorher an, da das Ändern der Größe 'langsam' ist. Ein Dictionary (z.B. std::map in C++) verbraucht aber immer ungefähr so viel Speicherplatz wie gerade nötig d.h. es ist in der Regel weder zu groß so dass du Speicherplatz verschwendest, noch gewinnst du Geschwindigkeit, wenn du von Anfang an mehr Speicherplatz belegst. Der Nachteil ist natürlich, das Dictionaries allgemein etwas langsamer sind, als Arrays.

Ich kann mir weder vorstellen, warum so eine Funktion nützlich sein sollte, noch kenne ich irgendeine Sprache die das unterstützt - was vermutlich an Punkt 1 liegt.
Lieber dumm fragen, als dumm bleiben!

4

02.03.2022, 17:20

Hallo zusammen,

im Rahmen meiner Übung mit der Rüstungserstellung kam mir die Idee, dass es von der Verarbeitung mit einem Dictionary einfacher wäre als mit einem Array. Bei einem Dictionary kann man jedes einzelne Bauteil einzeln mittels Schlüssel auswählen und herausnehmen. In einem Array müsste man immer das gesamte Array mittels for- bzw foreach-Schleife durchlaufen und müsste dann auch erstmal wissen welches Teil wo liegt. Als alternative gäbe es ja noch die Array<List>, allerdings ist mir auch dort keine Begrenzung bekannt. Es kann natürlich sein, dass sich dieses Problem von alleine lösen würde, wenn ich in einem Spiel bei einer Rüstung nur eine gewisse Anzahl an Angezeigten Slots hätte (Grafisch betrachtet). Da ich allerdings im derzeitigen Stadium nur den Code verwenden möchte (Konsolenanwendung), könnte ich bei einem Dictionary oder einer List unendlich Verstärkungen einbauen, da diese Varianten immer größer werden würden. Ich denke das problem könnte man noch mit bestimmten Bedingungen begrenzen, dass der Code mehr als 4 o.ä. einfach nicht zulassen würde. Es wäre nur einfacher wenn man von vornerein die Anzahl begrenzen könnte. Ich werde da mal noch etwas rumknobeln müssen denke ich. :)

PS.: @ Schrompf Die Programmiersprache ist c#

danke euch

Lg Gewinde

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

5

02.03.2022, 17:23

Ich denke das problem könnte man noch mit bestimmten Bedingungen begrenzen, dass der Code mehr als 4 o.ä. einfach nicht zulassen würde. Es wäre nur einfacher wenn man von vornerein die Anzahl begrenzen könnte.


Du musst doch auch bei einem Array selber dafür sorgen, dass du nicht an die 5. Stelle schreibst obwohl es nur 4 gibt.

Timmyew

Treue Seele

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

02.03.2022, 20:49

Du kannst mir auch einfach mal eine E-Mail schreiben.
Dann gehen wir das mal gemeinsam durch.
Ich persönlich verstehe jetzt nicht wo das Problem beim verwenden eines Dictionary ist ^^.
Ob du jetzt ein statisches Array benutzt oder ein Dictionary, ist doch eigentlich für deinen Anwendungszweck egal?

Jonathan

Community-Fossil

  • Private Nachricht senden

7

14.03.2022, 21:13

Prinzipiell musst du dann einfach an jeder Stelle, an der das Dicitonary erweitert werden kann abfragen, wie viele Elemente schon darin sind und dann gegebenenfalls das Hinzufügen nicht ausführen.
Am einfachsten geht das natürlich, wenn das Dictionary Teil irgendeiner Klasse ist und diese Klasse hat eine "AddEffect"-Methode oder so, die immer dann aufgerufen wird, wenn etwas hinzugefügt werden soll. Dort kannst du dann die Abfrage einmal zentral einbauen.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige