タイトル : Re^5: 配列に関して教えてください>< 投稿日 : 2010/12/18(Sat) 16:22 投稿者 : 魔界の仮面弁士
> List/Queue/Stackをまず知りませんでした 配列の場合、最初に要素数を決定しておく必要がありますが、 これらのクラスでは要素数を可変にできるため、取り扱いが容易となります。 要素数や順番が固定的な場合には、配列で十分ですが、 事前に何個のデータを持つべきか分からないような場合や、 データの削除や挿入がある場合には、配列よりも便利かと思います。 > List/Queue/Stackとはどういうものなのか これらは、複数のデータを蓄えておき、それを後で取り出すために使われる 「コレクション」系のクラスです。配列(Array)もコレクションの一種です。 Stack は、最後に入力したデータが先に出力されます(最初の入力は最後に出力される)。 Queue は、最初に入力したデータが先に出力されます(最後の入力は最後に出力される)。 List は、任意の場所のデータを取り出せます。 スタックとは積み上げるという意味です。お皿を順々に上に重ねていった場合、 一番上のお皿から取り出していきますよね。いきなり下のお皿を取る事はできません。 キューとは、待ち行列の意味です。ラーメン屋の順番待ちの場合、 最初に並んだ人が先で、一番最後に並んだ人は最後になりますね。 リストは一覧表。これは配列とほぼ同じで、先に追加したか後に追加したかは関係なく、 N番目のデータを取り出せるようになっています。 ------------ Dim s As New Stack(Of Integer)() s.Push(1234) s.Push(4567) s.Push(6789) s.Push(8901) MsgBox(s.Pop()) '最後の「8901」が取り出される MsgBox(s.Pop()) '「6789」が取り出される Dim q As New Queue(Of Integer)() q.Enqueue(111) q.Enqueue(333) q.Enqueue(555) q.Enqueue(777) MsgBox(q.Dequeue()) '最初の「111」が取り出される MsgBox(q.Dequeue()) '「333」が取り出される Dim l As New List(Of Integer)() l.Add(1001) l.Add(2002) l.Add(3003) l.Add(4004) MsgBox(l(0)) '0番目の「1001」が取り出される MsgBox(l(3)) '3番目の「4004」が取り出される |