CAtlList クラス

このクラスは、リスト オブジェクトを作成および管理するためのメソッドを提供します。

構文

template<typename E, class ETraits = CElementTraits<E>>
class CAtlList

パラメーター

E
要素型。

ETraits
要素をコピーまたは移動するために使用されるコード。 詳細については、「CElementTraits クラス」を参照してください。

メンバー

パブリック typedef

名前 説明
CAtlList::INARGTYPE

パブリック コンストラクター

名前 説明
CAtlList::CAtlList コンストラクター。
CAtlList::~CAtlList デストラクター。

パブリック メソッド

名前 説明
CAtlList::AddHead リストの先頭に要素を追加するには、このメソッドを呼び出します。
CAtlList::AddHeadList リストの先頭に既存のリストを追加するには、このメソッドを呼び出します。
CAtlList::AddTail このリストの末尾に要素を追加するには、このメソッドを呼び出します。
CAtlList::AddTailList このリストの末尾に既存のリストを追加するには、このメソッドを呼び出します。
CAtlList::AssertValid リストが有効であることを確認するには、このメソッドを呼び出します。
CAtlList::Find 指定した要素の一覧を検索するには、このメソッドを呼び出します。
CAtlList::FindIndex インデックス値を指定して要素の位置を取得するには、このメソッドを呼び出します。
CAtlList::GetAt リスト内の指定した位置の要素を返すには、このメソッドを呼び出します。
CAtlList::GetCount リスト内のオブジェクトの数を返すには、このメソッドを呼び出します。
CAtlList::GetHead リストの先頭にある要素を返すには、このメソッドを呼び出します。
CAtlList::GetHeadPosition リストの先頭の位置を取得するには、このメソッドを呼び出します。
CAtlList::GetNext リストから次の要素を返すには、このメソッドを呼び出します。
CAtlList::GetPrev リストから前の要素を返すには、このメソッドを呼び出します。
CAtlList::GetTail リストの末尾にある要素を返すには、このメソッドを呼び出します。
CAtlList::GetTailPosition リストの末尾の位置を取得するには、このメソッドを呼び出します。
CAtlList::InsertAfter リスト内の指定した位置の後に新しい要素を挿入するには、このメソッドを呼び出します。
CAtlList::InsertBefore リスト内の指定した位置の前に新しい要素を挿入するには、このメソッドを呼び出します。
CAtlList::IsEmpty リストが空であるかどうかを判断するには、このメソッドを呼び出します。
CAtlList::MoveToHead 指定した要素をリストの先頭に移動するには、このメソッドを呼び出します。
CAtlList::MoveToTail 指定した要素をリストの末尾に移動するには、このメソッドを呼び出します。
CAtlList::RemoveAll リストからすべての要素を削除するには、このメソッドを呼び出します。
CAtlList::RemoveAt リストから 1 つの要素を削除するには、このメソッドを呼び出します。
CAtlList::RemoveHead リストの先頭にある要素を削除するには、このメソッドを呼び出します。
CAtlList::RemoveHeadNoReturn 値を返さずにリストの先頭にある要素を削除するには、このメソッドを呼び出します。
CAtlList::RemoveTail リストの末尾にある要素を削除するには、このメソッドを呼び出します。
CAtlList::RemoveTailNoReturn 値を返さずにリストの末尾にある要素を削除するには、このメソッドを呼び出します。
CAtlList::SetAt リスト内の特定の位置にある要素の値を取得するには、このメソッドを呼び出します。
CAtlList::SwapElements リスト内の要素を入れ替えるには、このメソッドを呼び出します。

解説

CAtlList クラスでは、オブジェクト (重複あり) を順に並べたリストがサポートされます。このリストには、シーケンシャル アクセスまたは値指定によるアクセスが可能できます。 CAtlList リストは、二重にリンクされたリストのように動作します。 各リストには先頭と末尾が含まれており、新しい要素 (場合によってはリスト) をリストのどちらかの端に追加したり、特定の要素の前後に挿入したりできます。

ほとんどの CAtlList メソッドでは、位置の値が使用されます。 この値は、要素が格納されている実際のメモリ位置を参照するためにメソッドによって使用されます。直接計算したり予測したりすることはできません。 リスト内の n 番目の要素にアクセスする必要がある場合、CAtlList::FindIndex メソッドは、特定のインデックスに対応する位置の値を返します。 CAtlList::GetNext メソッドと CAtlList::GetPrev メソッドを使用すると、リスト内のオブジェクトを反復処理できます。

ATL で使用できるコレクション クラスの詳細については、「ATL コレクション クラス」を参照してください。

必要条件

ヘッダー: atlcoll.h

CAtlList::AddHead

リストの先頭に要素を追加するには、このメソッドを呼び出します。

POSITION AddHead();
POSITION AddHead(INARGTYPE element);

パラメーター

element
新しい要素。

戻り値

新しく追加された要素の位置を返します。

解説

最初のバージョンが使用されている場合は、そのコピー コンストラクターではなく、既定のコンストラクターを使用して空の要素が作成されます。

// Declare a list of integers
CAtlList<int> myList;

// Add some elements, each to the head of the list.
// As each new element is added, the previous head is
// pushed down the list.
myList.AddHead(42);
myList.AddHead(49);

// Confirm the value currently at the head of the list
ATLASSERT(myList.GetHead() == 49);

// Confirm the value currently at the tail of the list
ATLASSERT(myList.GetTail() == 42);   

CAtlList::AddHeadList

リストの先頭に既存のリストを追加するには、このメソッドを呼び出します。

void AddHeadList(const CAtlList<E, ETraits>* plNew);

パラメーター

plNew
追加するリスト。

解説

plNew が指すリストは、既存のリストの先頭に挿入されます。 デバッグ ビルドでは、plNew が NULL に等しい場合、アサーション エラーが発生します。

// Define two lists of integers
CAtlList<int> myList1;
CAtlList<int> myList2;

// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);

// Add an element to the second list
myList2.AddTail(4);

// Insert the first list into the second
myList2.AddHeadList(&myList1);

// The second list now contains:
// 1, 2, 3, 4   

CAtlList::AddTail

このリストの末尾に要素を追加するには、このメソッドを呼び出します。

POSITION AddTail();
POSITION AddTail(INARGTYPE element);

パラメーター

element
追加する要素。

戻り値

新しく追加された要素の POSITION を返します。

解説

最初のバージョンが使用されている場合は、そのコピー コンストラクターではなく、既定のコンストラクターを使用して空の要素が作成されます。 要素はリストの末尾に追加されるため、これが末尾になります。 このメソッドは、空のリストと共に使用できます。

// Define the list
CAtlList<int> myList;

// Add elements to the tail
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);

// Confirm the current head of the list
ATLASSERT(myList.GetHead() == 1);

// Confirm the current tail of the list
ATLASSERT(myList.GetTail() == 3);   

CAtlList::AddTailList

このリストの末尾に既存のリストを追加するには、このメソッドを呼び出します。

void AddTailList(const CAtlList<E, ETraits>* plNew);

パラメーター

plNew
追加するリスト。

解説

plNew が指すリストは、リスト オブジェクトの最後の要素 (存在する場合) の後に挿入されます。 したがって、plNew リストの最後の要素が末尾になります。 デバッグ ビルドでは、plNew が NULL に等しい場合、アサーション エラーが発生します。

// Define two integer lists
CAtlList<int> myList1;
CAtlList<int> myList2;

// Fill up the first list
myList1.AddTail(1);
myList1.AddTail(2);
myList1.AddTail(3);

// Add an element to the second list
myList2.AddTail(4);

// Insert the first list into the second
myList2.AddTailList(&myList1);

// The second list now contains:
// 4, 1, 2, 3   

CAtlList::AssertValid

リストが有効であることを確認するには、このメソッドを呼び出します。

void AssertValid() const;

解説

デバッグ ビルドでは、リスト オブジェクトが有効でない場合、アサーション エラーが発生します。 空のリストが有効となるには、先頭と末尾の両方が NULL を指している必要があります。空でないリストが有効となるには、先頭と末尾の両方が、有効なアドレスを指している必要があります。

// Define the list
CAtlList<int> myList;

// AssertValid only exists in debug builds
#ifdef _DEBUG
myList.AssertValid();
#endif   

CAtlList::CAtlList

コンストラクター。

CAtlList(UINT nBlockSize = 10) throw();

パラメーター

nBlockSize
ブロック サイズ。

解説

CAtlList オブジェクトのコンストラクター。 ブロックのサイズは、新しい要素が必要な場合に割り当てられるメモリ量の測定結果です。 ブロック サイズが大きくなると、メモリ割り当てルーチンの呼び出しは減少しますが、より多くのリソースが使用されます。

// Define two lists
CAtlList<int> myList1;
CAtlList<double> myList2;   

CAtlList::~CAtlList

デストラクター。

~CAtlList() throw();

解説

リストからすべての要素を削除する CAtlList::RemoveAll への呼び出しを含め、割り当てられたすべてのリソースを解放します。

デバッグ ビルドでは、RemoveAll への呼び出しの後にリストにいくつかの要素がまだ含まれている場合、アサーション エラーが発生します。

CAtlList::Find

指定した要素の一覧を検索するには、このメソッドを呼び出します。

POSITION Find(INARGTYPE element, POSITION posStartAfter = NULL) const throw();

パラメーター

element
リスト内で検索する要素。

posStartAfter
検索の開始位置。 値が指定されていない場合、検索は先頭の要素から検索が開始されます。

戻り値

要素の POSITION 値が見つかった場合は、これを返します。それ以外の場合は NULL を返します。

解説

デバッグ ビルドでは、リスト オブジェクトが有効でない場合、または posStartAfter 値が範囲外の場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);
myList.AddTail(400);

// Find the '300' element in the list,
// starting from the list head.
POSITION myPos = myList.Find(300);

// Confirm that the element was found
ATLASSERT(myList.GetAt(myPos) == 300);   

CAtlList::FindIndex

インデックス値を指定して要素の位置を取得するには、このメソッドを呼び出します。

POSITION FindIndex(size_t iElement) const throw();

パラメーター

iElement
必須のリスト要素の 0 から始まるインデックス。

戻り値

対応する POSITION 値を返します。iElement が範囲外の場合は NULL を返します。

解説

このメソッドは、特定のインデックス値に対応する POSITION を返します。これにより、リスト内の n 番目の要素にアクセスできるようになります。

デバッグ ビルドでは、リスト オブジェクトが有効でない場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
for (int i = 0; i < 100; i++)
{
   myList.AddTail(i);
}

// Iterate through the entire list
for (size_t j = 0; j < myList.GetCount(); j++)
{
   size_t i = myList.GetAt(myList.FindIndex(j));
   ATLASSERT(i == j);
}   

CAtlList::GetAt

リスト内の指定した位置の要素を返すには、このメソッドを呼び出します。

E& GetAt(POSITION pos) throw();
const E& GetAt(POSITION pos) const throw();

パラメーター

pos
特定の要素を指定する POSITION 値。

戻り値

要素への参照、または要素のコピー。

解説

リストが const の場合、GetAt は要素のコピーを返します。 これにより、メソッドを代入ステートメントの右側でのみ使用し、そのリストを変更から保護することができます。

リストが const ではない場合、GetAt は要素への参照を返します。 これにより、メソッドを代入ステートメントのどちら側でも使用でき、リスト エントリを変更できるようになります。

デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

CAtlList::FindIndex の例を参照してください。

CAtlList::GetCount

リスト内のオブジェクトの数を返すには、このメソッドを呼び出します。

size_t GetCount() const throw();

戻り値

リストの要素数を返します。

CAtlList::Find の例を参照してください。

CAtlList::GetHead

リストの先頭にある要素を返すには、このメソッドを呼び出します。

E& GetHead() throw();
const E& GetHead() const throw();

戻り値

リストの先頭にある要素への参照、またはそのコピーを返します。

解説

リストが const の場合、GetHead は、リストの先頭にある要素のコピーを返します。 これにより、メソッドを代入ステートメントの右側でのみ使用し、そのリストを変更から保護することができます。

リストが const ではない場合、GetHead は、リストの先頭にある要素への参照を返します。 これにより、メソッドを代入ステートメントのどちら側でも使用でき、リスト エントリを変更できるようになります。

デバッグ ビルドでは、リストの先頭が NULL を指す場合、アサーション エラーが発生します。

CAtlList::AddHead の例を参照してください。

CAtlList::GetHeadPosition

リストの先頭の位置を取得するには、このメソッドを呼び出します。

POSITION GetHeadPosition() const throw();

戻り値

リストの先頭にある要素に対応する POSITION 値を返します。

解説

リストが空の場合、返される値は NULL です。

// Define the integer list
CAtlList<int> myList;
int i;

// Populate the list
for (i = 0; i < 100; i++)
{
   myList.AddTail(i);
}

// Get the starting position value
POSITION myPos = myList.GetHeadPosition();

// Iterate through the entire list
i = 0;
int j;

do {
   j = myList.GetNext(myPos);
   ATLASSERT(i == j);
   i++;
} while (myPos != NULL);   

CAtlList::GetNext

リストから次の要素を返すには、このメソッドを呼び出します。

E& GetNext(POSITION& pos) throw();
const E& GetNext(POSITION& pos) const throw();

パラメーター

pos
GetNextCAtlList::GetHeadPosition、またはその他の CAtlList メソッドへの前回の呼び出しで返された POSITION 値。

戻り値

リストが const の場合、GetNext はリスト内の次の要素のコピーを返します。 これにより、メソッドを代入ステートメントの右側でのみ使用し、そのリストを変更から保護することができます。

リストが constでない場合、GetNext はリスト内の次の要素への参照を返します。 これにより、メソッドを代入ステートメントのどちら側でも使用でき、リスト エントリを変更できるようになります。

解説

POSITION カウンター pos は、リスト内の次の要素を指すように更新されます。要素がこれ以上ない場合は、NULL になります。 デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

CAtlList::GetHeadPosition の例を参照してください。

CAtlList::GetPrev

リストから前の要素を返すには、このメソッドを呼び出します。

E& GetPrev(POSITION& pos) throw();
const E& GetPrev(POSITION& pos) const throw();

パラメーター

pos
GetPrevCAtlList::GetTailPosition、またはその他の CAtlList メソッドへの前回の呼び出しで返された POSITION 値。

戻り値

リストが const の場合、GetPrev はリスト内の要素のコピーを返します。 これにより、メソッドを代入ステートメントの右側でのみ使用し、そのリストを変更から保護することができます。

リストが constでない場合、GetPrev はリスト内の要素への参照を返します。 これにより、メソッドを代入ステートメントのどちら側でも使用でき、リスト エントリを変更できるようになります。

解説

POSITION カウンター pos は、リスト内の前の要素を指すように更新されます。要素がこれ以上ない場合は、NULL になります。 デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

CAtlList::GetTailPosition の例を参照してください。

CAtlList::GetTail

リストの末尾にある要素を返すには、このメソッドを呼び出します。

E& GetTail() throw();
const E& GetTail() const throw();

戻り値

リストの末尾にある要素への参照、またはそのコピーを返します。

解説

リストが const の場合、GetTail は、リストの先頭にある要素のコピーを返します。 これにより、メソッドを代入ステートメントの右側でのみ使用し、そのリストを変更から保護することができます。

リストが const ではない場合、GetTail は、リストの先頭にある要素への参照を返します。 これにより、メソッドを代入ステートメントのどちら側でも使用でき、リスト エントリを変更できるようになります。

デバッグ ビルドでは、リストの末尾が NULL を指す場合、アサーション エラーが発生します。

CAtlList::AddTail の例を参照してください。

CAtlList::GetTailPosition

リストの末尾の位置を取得するには、このメソッドを呼び出します。

POSITION GetTailPosition() const throw();

戻り値

リストの末尾にある要素に対応する POSITION 値を返します。

解説

リストが空の場合、返される値は NULL です。

// Define the integer list
CAtlList<int> myList;
int i;

// Populate the list
for (i = 0; i < 100; i++)
{
   myList.AddHead(i);
}

// Get the starting position value
POSITION myP = myList.GetTailPosition();

// Iterate through the entire list
i = 0;
int j;

do {
   j = myList.GetPrev(myP);
   ATLASSERT(i == j);
   i++;
} while (myP != NULL);   

CAtlList::INARGTYPE

要素が入力引数として渡されるときに使用される型。

typedef ETraits::INARGTYPE INARGTYPE;

CAtlList::InsertAfter

リスト内の指定した位置の後に新しい要素を挿入するには、このメソッドを呼び出します。

POSITION InsertAfter(POSITION pos, INARGTYPE element);

パラメーター

pos
新しい要素が挿入される開始点となる POSITION 値。

element
挿入される要素。

戻り値

新しい要素の POSITION 値を返します。

解説

デバッグ ビルドでは、リストが有効でない場合、挿入が失敗した場合、または末尾の後に要素を挿入しようとした場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertAfter(myPos, 2);
myPos = myList.InsertAfter(myPos, 3);

// Confirm the tail value is as expected
ATLASSERT(myList.GetTail() == 3);   

CAtlList::InsertBefore

リスト内の指定した位置の前に新しい要素を挿入するには、このメソッドを呼び出します。

POSITION InsertBefore(POSITION pos, INARGTYPE element);

パラメーター

pos
新しい要素は、リスト内のこの POSITION 値の前に挿入されます。

element
挿入される要素。

戻り値

新しい要素の POSITION 値を返します。

解説

デバッグ ビルドでは、リストが有効でない場合、挿入が失敗した場合、または先頭の前に要素を挿入しようとした場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
POSITION myPos = myList.AddHead(1);
myPos = myList.InsertBefore(myPos, 2);
myPos = myList.InsertBefore(myPos, 3);

// Confirm the head value is as expected
ATLASSERT(myList.GetHead() == 3);  

CAtlList::IsEmpty

リストが空であるかどうかを判断するには、このメソッドを呼び出します。

bool IsEmpty() const throw();

戻り値

リストにオブジェクトが含まれていない場合は true、それ以外の場合は false を返します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove the tail element
myList.RemoveTailNoReturn();

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove the head element
myList.RemoveHeadNoReturn();

// Confirm not empty
ATLASSERT(myList.IsEmpty() == false);

// Remove all remaining elements
myList.RemoveAll();

// Confirm empty
ATLASSERT(myList.IsEmpty() == true);   

CAtlList::MoveToHead

指定した要素をリストの先頭に移動するには、このメソッドを呼び出します。

void MoveToHead(POSITION pos) throw();

パラメーター

pos
移動する要素の POSITION 値。

解説

指定した要素は、現在位置からリストの先頭に移動されます。 デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(1);
myList.AddTail(2);
myList.AddTail(3);
myList.AddTail(4);

// Move the tail element to the head
myList.MoveToHead(myList.GetTailPosition());

// Confirm the head is as expected
ATLASSERT(myList.GetHead() == 4);

// Move the head element to the tail
myList.MoveToTail(myList.GetHeadPosition());

// Confirm the tail is as expected
ATLASSERT(myList.GetTail() == 4);   

CAtlList::MoveToTail

指定した要素をリストの末尾に移動するには、このメソッドを呼び出します。

void MoveToTail(POSITION pos) throw();

パラメーター

pos
移動する要素の POSITION 値。

解説

指定した要素は、現在位置からリストの末尾に移動されます。 デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

CAtlList::MoveToHead の例を参照してください。

CAtlList::RemoveAll

リストからすべての要素を削除するには、このメソッドを呼び出します。

void RemoveAll() throw();

解説

このメソッドでは、リストからすべての要素を削除し、割り当てられたメモリを解放します。 デバッグ ビルドでは、すべての要素が削除されない場合、またはリスト構造が破損している場合、ATLASSERT が発生します。

CAtlList::IsEmpty の例を参照してください。

CAtlList::RemoveAt

リストから 1 つの要素を削除するには、このメソッドを呼び出します。

void RemoveAt(POSITION pos) throw();

パラメーター

pos
削除する要素の POSITION 値。

解説

pos によって参照される要素が削除され、メモリが解放されます。 RemoveAt を使用して、リストの先頭または末尾を削除できます。

デバッグ ビルドでは、リストが無効な場合、または、要素を削除すると、リスト構造に含まれないメモリにリストがアクセスする場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Use RemoveAt to remove elements one by one
myList.RemoveAt(myList.Find(100));
myList.RemoveAt(myList.Find(200));
myList.RemoveAt(myList.Find(300));

// Confirm all have been deleted
ATLASSERT(myList.IsEmpty() == true);   

CAtlList::RemoveHead

リストの先頭にある要素を削除するには、このメソッドを呼び出します。

E RemoveHead();

戻り値

リストの先頭にある要素を返します。

解説

リストから先頭の要素が削除され、メモリが解放されます。 要素のコピーが返されます。 デバッグ ビルドでは、リストが空の場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Confirm the head of the list
ATLASSERT(myList.GetHead() == 100);

// Remove the head of the list
ATLASSERT(myList.RemoveHead() == 100);

// Confirm the new head of the list
ATLASSERT(myList.GetHead() == 200);   

CAtlList::RemoveHeadNoReturn

値を返さずにリストの先頭にある要素を削除するには、このメソッドを呼び出します。

void RemoveHeadNoReturn() throw();

解説

リストから先頭の要素が削除され、メモリが解放されます。 デバッグ ビルドでは、リストが空の場合、アサーション エラーが発生します。

CAtlList::IsEmpty の例を参照してください。

CAtlList::RemoveTail

リストの末尾にある要素を削除するには、このメソッドを呼び出します。

E RemoveTail();

戻り値

リストの末尾にある要素を返します。

解説

リストから末尾の要素が削除され、メモリが解放されます。 要素のコピーが返されます。 デバッグ ビルドでは、リストが空の場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);
myList.AddTail(300);

// Confirm the tail of the list
ATLASSERT(myList.GetTail() == 300);

// Remove the tail of the list
ATLASSERT(myList.RemoveTail() == 300);

// Confirm the new tail of the list
ATLASSERT(myList.GetTail() == 200);   

CAtlList::RemoveTailNoReturn

値を返さずにリストの末尾にある要素を削除するには、このメソッドを呼び出します。

void RemoveTailNoReturn() throw();

解説

リストから末尾の要素が削除され、メモリが解放されます。 デバッグ ビルドでは、リストが空の場合、アサーション エラーが発生します。

CAtlList::IsEmpty の例を参照してください。

CAtlList::SetAt

リスト内の特定の位置にある要素の値を取得するには、このメソッドを呼び出します。

void SetAt(POSITION pos, INARGTYPE element);

パラメーター

pos
変更する要素に対応する POSITION 値。

element
新しい要素の値。

解説

既存の値を element に置き換えます。 デバッグ ビルドでは、pos が NULL に等しい場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
myList.AddTail(100);
myList.AddTail(200);

// Use SetAt to change the values stored in the head and
// tail of the list
myList.SetAt(myList.GetHeadPosition(), myList.GetHead() * 10);
myList.SetAt(myList.GetTailPosition(), myList.GetTail() * 10);

// Confirm the values
ATLASSERT(myList.GetHead() == 1000);
ATLASSERT(myList.GetTail() == 2000);   

CAtlList::SwapElements

リスト内の要素を入れ替えるには、このメソッドを呼び出します。

void SwapElements(POSITION pos1, POSITION pos2) throw();

パラメーター

pos1
最初 POSITION 値。

pos2
2 番目の POSITION 値。

解説

指定した 2 つの位置にある要素を入れ替えます。 デバッグ ビルドでは、どちらかの位置の値が NULL に等しい場合、アサーション エラーが発生します。

// Define the integer list
CAtlList<int> myList;

// Populate the list
for (int i = 0; i < 100; i++)
{
   myList.AddHead(i);
}

// Order is: 99, 98, 97, 96...
ATLASSERT(myList.GetHead() == 99);
ATLASSERT(myList.GetTail() == 0);

// Perform a crude bubble sort
for (int j = 0; j < 100; j++)
{
   for(int i = 0; i < 99; i++)
   {
      if (myList.GetAt(myList.FindIndex(i)) > 
         myList.GetAt(myList.FindIndex(i+1)))
      {
         myList.SwapElements(myList.FindIndex(i), myList.FindIndex(i+1));
      }
   }
}

// Order is: 0, 1, 2, 3...
ATLASSERT(myList.GetHead() == 0);
ATLASSERT(myList.GetTail() == 99);   

関連項目

CList クラス
クラスの概要