中の技術日誌
 ホーム / 上へ

技術解説 .NET 2.0 ジェネリック(Generics)  第7回 Stack<T>とQueue<T>

2006/01/27

この文書はVisual Studio 2005をベースに記述されています。

第7回 Stack<T>とQueue<T>

古来よりメモリ管理等のやり方として、スタック方式(LIFO(FILO)方式)と、キュー方式(FIFO方式)というが存在する。

これらの方式などはまさにGenericsの格好の的である。

1.x C#
Stack st = new Stack();
st.Push("1");
st.Push("2");
st.Push("3");
Debug.WriteLine((string)st.Pop());
Debug.WriteLine((string)st.Pop());
Debug.WriteLine((string)st.Pop());
Queue qu = new Queue();
qu.Enqueue("1");
qu.Enqueue("2");
qu.Enqueue("3");
Debug.WriteLine((string)qu.Dequeue());
Debug.WriteLine((string)qu.Dequeue());
Debug.WriteLine((string)qu.Dequeue());
1.x VB
Dim st As Stack = New Stack
st.Push("1")
st.Push("2")
st.Push("3")
Debug.WriteLine(CStr(st.Pop()))
Debug.WriteLine(CStr(st.Pop()))
Debug.WriteLine(CStr(st.Pop()))
Dim qu As Queue = New Queue
qu.Enqueue("1")
qu.Enqueue("2")
qu.Enqueue("3")
Debug.WriteLine(CStr(qu.Dequeue()))
Debug.WriteLine(CStr(qu.Dequeue()))
Debug.WriteLine(CStr(qu.Dequeue()))
1.x MC++
Stack __gc *st = new Stack();
st->Push(S"1");
st->Push(S"2");
st->Push(S"3");
Debug::WriteLine(static_cast<String*>(st->Pop()));
Debug::WriteLine(static_cast<String*>(st->Pop()));
Debug::WriteLine(static_cast<String*>(st->Pop()));
Queue __gc *qu = new Queue();
qu->Enqueue(S"1");
qu->Enqueue(S"2");
qu->Enqueue(S"3");
Debug::WriteLine(static_cast<String*>(qu->Dequeue()));
Debug::WriteLine(static_cast<String*>(qu->Dequeue()));
Debug::WriteLine(static_cast<String*>(qu->Dequeue()));

いづれも1.x系でも便利に使ってきたと思う。

これらが2.0では下記のようになる

2.0 C#
Stack<string> ss = new Stack<string>();
ss.Push("1");
ss.Push("2");
ss.Push("3");
Debug.Print(ss.Pop());
Debug.Print(ss.Pop());
Debug.Print(ss.Pop());
Queue<string> qs = new Queue<string>();
qs.Enqueue("1");
qs.Enqueue("2");
qs.Enqueue("3");
Debug.Print(qs.Dequeue());
Debug.Print(qs.Dequeue());
Debug.Print(qs.Dequeue());
2.0 VB
Dim ss As Stack(Of String) = New Stack(Of String)()
ss.Push("1")
ss.Push("2")
ss.Push("3")
Debug.Print(ss.Pop())
Debug.Print(ss.Pop())
Debug.Print(ss.Pop())
Dim qs As Queue(Of String) = New Queue(Of String)()
qs.Enqueue("1")
qs.Enqueue("2")
qs.Enqueue("3")
Debug.Print(qs.Dequeue())
Debug.Print(qs.Dequeue())
Debug.Print(qs.Dequeue())
2.0 C++/CLI
System::Collections::Generic::Stack<String^>^ ss = gcnew System::Collections::Generic::Stack<String^>();
ss->Push("1");
ss->Push("2");
ss->Push("3");
Debug::Print(ss->Pop());
Debug::Print(ss->Pop());
Debug::Print(ss->Pop());
System::Collections::Generic::Queue<String^>^ qs = gcnew System::Collections::Generic::Queue<String^>();
qs->Enqueue("1");
qs->Enqueue("2");
qs->Enqueue("3");
Debug::Print(qs->Dequeue());
Debug::Print(qs->Dequeue());
Debug::Print(qs->Dequeue());

[戻る] [進む]


2006/12/16 大阪勉強会#4 + 忘年会 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告