In Java gibt es eine nette Bibliotheksklasse java.util.Stack, die Push- und Pop-Methoden implementiert. Gibt es in Ziel C etwas Ähnliches?
Ich habe nur MutableArray gefunden. Es scheint komisch, dass ich so ein grundlegendes Ding wie einen Stapel implementieren muss, es muss etwas wie "NSStack", "NSQueue" und andere ähnliche Sachen geben.
soweit ich weiß, gibt es nichts wie stack und queue im sdk.
Es gibt ein Beispiel für die Implementierung der Warteschlange hier .
Niemand sollte es vergessen Objective-C bietet eine ziemlich schöne Variante: Objective-C ++. Und die C ++ - Standardbibliothek bietet die Datenstrukturen, die Sie brauchen, getestet, debuggt, stabil und so schnell wie möglich. Am besten, sie arbeiten perfekt mit ARC. Bestest, Sie können sogar zwischen %code% oder %code% Zeigern wählen, wenn Sie es fühlen.
Schauen Sie sich %code% und %code% an.
Das heißt, %code% funktioniert perfekt für Stacks: %code% , %code% und %code% werden den Job mit guter Leistung gut machen.
C ++ kann ausführlich sein. Schrecklich ausführlich. Aber es hat auch eine gewisse Eleganz hier und da und einige sehr mächtige Konstrukte. Einige Teile der Standardbibliothek glänzen wirklich, und die Datenstrukturen gehören zu den Perlen, wenn die Alien-Syntax beherrscht wird. Es kann trotzdem mit ein paar typedefs versteckt werden.
Sie (wie ich) müssen sich vielleicht Sorgen machen, dass die Verwendung von NSMutableArray aus der Warteschlange entfernt wird, weil Sie das erste Objekt im NSMutableArray entfernen müssen, und das Entfernen bewirkt eine Verschiebung aller Objekte im Array. Das ist jedoch nicht notwendig, basierend auf dem Test, den ich hier gemacht habe: Für ein NSMutableArray, das 100000 Objekte enthält, entferne alle Objekte, indem du kontinuierlich das erste entfernst Das Objekt ist 100 ms langsamer als das fortlaufende Entfernen des letzten Objekts. Ich habe auch verglichen, ein NSMutableArray mit zwei NSMutableArrays zu verwenden. Obwohl es möglich ist, das Entfernen des ersten Objekts durch Verwendung von zwei NSMutableArrays, die als zwei Stapel verwendet werden, zu vermeiden, ist die Double-Stack-Lösung tatsächlich langsamer.
Ich habe eine Stack-Implementierung hier . Es verwendet %code% , um die schmutzige Arbeit zu erledigen, die wirklich nicht so schlecht ist. Aber in die Foundation ist nichts eingebaut.
In Java gibt es eine nette Bibliotheksklasse java.util.Stack, die Push- und Pop-Methoden implementiert. Gibt es in Ziel C etwas Ähnliches?
Ich habe nur MutableArray gefunden. Es scheint komisch, dass ich so ein grundlegendes Ding wie einen Stapel implementieren muss, es muss etwas wie "NSStack", "NSQueue" und andere ähnliche Sachen geben.
Ich habe eine Stack-Implementierung hier . Es verwendet NSMutableArray
, um die schmutzige Arbeit zu erledigen, die wirklich nicht so schlecht ist. Aber in die Foundation ist nichts eingebaut.
Niemand sollte es vergessen Objective-C bietet eine ziemlich schöne Variante: Objective-C ++. Und die C ++ - Standardbibliothek bietet die Datenstrukturen, die Sie brauchen, getestet, debuggt, stabil und so schnell wie möglich. Am besten, sie arbeiten perfekt mit ARC. Bestest, Sie können sogar zwischen __weak
oder __strong
Zeigern wählen, wenn Sie es fühlen.
Schauen Sie sich <queue>
und <stack>
an.
Das heißt, NSMutableArray
funktioniert perfekt für Stacks: -addObject:
, -lastObject
und -removeLastObject
werden den Job mit guter Leistung gut machen.
C ++ kann ausführlich sein. Schrecklich ausführlich. Aber es hat auch eine gewisse Eleganz hier und da und einige sehr mächtige Konstrukte. Einige Teile der Standardbibliothek glänzen wirklich, und die Datenstrukturen gehören zu den Perlen, wenn die Alien-Syntax beherrscht wird. Es kann trotzdem mit ein paar typedefs versteckt werden.
Sie (wie ich) müssen sich vielleicht Sorgen machen, dass die Verwendung von NSMutableArray aus der Warteschlange entfernt wird, weil Sie das erste Objekt im NSMutableArray entfernen müssen, und das Entfernen bewirkt eine Verschiebung aller Objekte im Array. Das ist jedoch nicht notwendig, basierend auf dem Test, den ich hier gemacht habe: Für ein NSMutableArray, das 100000 Objekte enthält, entferne alle Objekte, indem du kontinuierlich das erste entfernst Das Objekt ist 100 ms langsamer als das fortlaufende Entfernen des letzten Objekts. Ich habe auch verglichen, ein NSMutableArray mit zwei NSMutableArrays zu verwenden. Obwohl es möglich ist, das Entfernen des ersten Objekts durch Verwendung von zwei NSMutableArrays, die als zwei Stapel verwendet werden, zu vermeiden, ist die Double-Stack-Lösung tatsächlich langsamer.
Tags und Links objective-c stack nsmutablearray