Push/Pop Funktion für Arrays?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Noa

Betreff: Push/Pop Funktion für Arrays?

BeitragMo, Okt 09, 2006 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allerseits,

gibts für Arrays ne Push und Pop-Funktion? Also ich hab bisher keine gefunden. Oder hat irgendwer schon etwas in der Richtung entworfen oder Ideen dafür? Ich weiß, dass man Push im Prinzip mit Slice hinkriegt aber grade ne Pop-Funktion würde jedes mal ne Menge Code ersetzen.

Danke schonmal im Voraus

FOODy

BeitragMo, Okt 09, 2006 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß nicht.
Aber man kann eigene funktionen dafür machen. (sind ja nur paar zeilen Very Happy)

Hier ist ein Beispiel für ein Int-Array:
Code: [AUSKLAPPEN]
SuperStrict

Framework BRL.StandardIO

Local array:Int[] = [1,2,3,4,5,6,7,8,9,10,11,12]


PushInt(array,13)
PushInt(array,14)
PushInt(array,15)

While array.length
   Print PopInt(array)
Wend

'--------------------------------------------------------------------------

Function PushInt(array:Int[] Var,val:Int)
   array = array[..array.length+1]
   array[array.length-1] = val
EndFunction

Function PopInt:Int(array:Int[] Var)
   Local tmp:Int = array[0]
   array = array[1..]
   Return tmp
EndFunction



Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Dreamora

BeitragDi, Okt 10, 2006 6:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist mit abstand die worst case idee, sorry.
Slicing nach jedem Aufruf ist eine speedtechnisch inakzeptable Lösung.

Wenn du dir einen Stack basteln willst, nimm TList (brl.linkedlist).

Bei Push fügst du das Element am anfang der Liste ein, bei Pop removst du das erste Element der liste (listremove(liste,liste.first()) ) und bei Top gibst du das erste Element der Liste zurück
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group