下邊的代碼演示瞭如何使用ACE容器 ACE_DLLList 的使用方法,從名字上看,就可以知道這是一個動態的List,所以在使用的過程中和 STL 提供的 list 還是有很大的不同的。
// ACElist.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"
//這種使用方式十分難以理解,和 stl 的 list 比較起來,使用
//方法有很大的偏差。一定要存儲指針。
typedef ACE_DLList<int> MyList;
int _tmain(int argc, _TCHAR* argv[])
{
MyList list;
//數據進入鏈表
for(int i=0; i<10; i++)
{
int *pint = new int;
*pint = i * 10;
list.insert_tail(pint);
}
//迭代器前向訪問
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Forward iteration\n")));
ACE_DLList_Iterator<int> iter (list);
while (!iter.done ())
{
printf("%d\n", *(iter.next()));
iter++;
}
//迭代器後向訪問
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Reverse Iteration\n")));
ACE_DLList_Reverse_Iterator<int> riter (list);
while (!riter.done ())
{
printf("%d\n", *(riter.next()));
riter++;
}
//刪除空間
ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("delete \n")));
for(int i=0; i<10; i++)
{
int *pint = list.delete_head();
printf("%d\n", *pint);
delete pint;
}
getchar();
return 0;
}