Java には、push および pop メソッドを実装する優れたライブラリ クラス java.util.Stack があります。Objective Cに似たものはありますか?
MutableArray だけが見つかりました。スタックなどの基本的なものを実装する必要があるのは奇妙に思えます。「NSStack」、「NSQueue」などのようなものが必要です。
Java には、push および pop メソッドを実装する優れたライブラリ クラス java.util.Stack があります。Objective Cに似たものはありますか?
MutableArray だけが見つかりました。スタックなどの基本的なものを実装する必要があるのは奇妙に思えます。「NSStack」、「NSQueue」などのようなものが必要です。
Objective-Cが非常に優れたバリアントであるObjective-C++を提供していることを忘れてはなりません。また、C ++標準ライブラリは、必要なデータ構造を提供し、十分にテストされ、デバッグされ、安定しており、可能な限り高速です。最良の方法は、ARCと完全に連携することです。最高の、あなたがそれを感じるならば、あなたは__weak
またはポインタの間でさえ選ぶことができます。__strong
を見て<queue>
ください<stack>
。
とは言うものの、NSMutableArray
スタックに対しては完全にうまく機能します:-addObject:
、-lastObject
そして-removeLastObject
優れたパフォーマンスでうまく機能します。
C++は冗長にすることができます。ひどく冗長。しかし、それはまた、あちこちでいくつかの優雅さ、そしていくつかの非常に強力な構造を持っています。標準ライブラリのいくつかの部分は本当に輝いていて、エイリアンの構文が習得されると、データ構造は真珠の中にあります。とにかく、いくつかのtypedefで非表示にすることができます。
ここにスタックの実装があります。それはNSMutableArray
実際にはそれほど悪くない汚い仕事をするために使用されます。しかし、Foundation には何も組み込まれていません。
デキューでは、NSMutableArray の最初のオブジェクトを削除する必要があり、削除すると配列内のすべてのオブジェクトがシフトするため、(私と同じように) NSMutableArray を使用するデキューのパフォーマンスについて心配するかもしれません。ただし、ここで行ったテストに基づいて、これは必要ありません。100000 個のオブジェクトを含む NSMutableArray の場合、最初のオブジェクトを連続して削除してすべてのオブジェクトを削除すると、最後のオブジェクトを連続して削除するよりも 100 ミリ秒遅くなります。また、1 つの NSMutableArray を使用する場合と 2 つの NSMutableArray を使用する場合を比較しました。2 つのスタックとして使用される 2 つの NSMutableArray を使用して最初のオブジェクトの削除を回避することは可能ですが、ダブル スタック ソリューションは実際には遅くなります。
私の知る限り、SDK にはスタックとキューのようなものはありません。ここ
にキューの実装の例があります。