以下代碼演示瞭如何在ACE_Unbounded_Queue這個隊列容器中存儲具體的數據元素和數據元素的指針。
// ACEqueue.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ace/OS_Memory.h"
#include "ace/Log_Msg.h"
#include "ace/Containers.h"
//演示隊列元素存儲具體的元素
int runStackUnboundedQueue (void)
{
ACE_TRACE ("QueueExample::runStackUnboundedQueue");
//在隊列頭部插入 0 --- 9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
ACE_Unbounded_Queue<int> queue;
int elem1[10];
int i;
for (i = 0; i < 10; i++)
{
elem1[i] = i;
queue.enqueue_head (elem1[i]);
}
//在隊列尾部插入 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
int elem2[10];
for (i = 0; i < 10; i++)
{
elem2[i] = i + 10;
queue.enqueue_tail(elem2[i]);
}
//隊列輸出
for (ACE_Unbounded_Queue_Iterator<int> iter (queue); !iter.done (); iter.advance ())
{
int *elem = 0;
iter.next (elem);
printf("%d ", *elem);
}
printf("\n");
return 0;
}
//演示隊列元素存儲指針
int runHeapUnboundedQueue (void)
{
ACE_TRACE ("QueueExample::runHeapUnboundedQueue");
ACE_Unbounded_Queue<int*> queue;
for (int i = 0; i < 20; i++)
{
int *elem = new int;
*elem = i;
queue.enqueue_head(elem);
}
for (ACE_Unbounded_Queue_Iterator<int*> iter= queue.begin (); !iter.done (); iter.advance ())
{
int **elem = 0;
iter.next(elem);
printf("%d ", **elem);
delete (*elem);
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
runStackUnboundedQueue();
runHeapUnboundedQueue();
getchar();
return 0;
}