ACE 容器之三 ACE_Unbounded_Queue的使用

以下代碼演示瞭如何在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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章