//アイデア分析:リンクリストクラスのメンバーを考える(ノードイテレータ)
書式#include <iostreamの>
名前空間stdを使用。
//ノード
テンプレート<typenameにU>
クラスノード
{
パブリック:
ノード(){pNext == NULL;}
ノード(Uデータ):M_DATA(データ){pNext = NULL;}
UのM_DATA。
ノード<U> * pNext。
}。
//リストは、基礎となるリストです
テンプレート<typenameにU>
クラスマイリスト
{
パブリック:
//マイリスト<整数> :: Myiterator ITER。
//イテレータは、基礎となる++へのポインタです - *
構造体Myiterator
{
Myiterator(ノード<U>・ノード= NULL)
{
pNode = node;
}
Myiterator&演算子++(int型)
{
PNODE = pNode-> pNext。
*これを返します。
}
ブール演算子!=(constのMyiterator&その他)
{
!PNODE = other.pNodeを返します。
}
U演算子*()
{
pNode-> M_DATAを返します。
}
ノード<U> * PNODE。
}。
//リスト<整数>リスト; list.begin();イテレータを返します。
//メンバ関数
Myiterator)(スタート
{
Myiteratorパス(m_pfrist)。
帰路。
}
Myiteratorエンド()
{
Myiteratorパス(NULL)。
帰路。
}
マイリスト():(0)m_il {m_pfrist = NULL;}
ボイド挿入(Uデータ)。
無効ディスプレイ();
プライベート:
そのm_il int型。
//オブジェクトが追加する必要が発生し、<U>
ノード<U> * m_pfrist。
}。
//挿入
テンプレート<typenameにU>
マイリスト<U>を無効::(Uデータ)を挿入します
{
ノード<U>・ノード=新しいノード<U>(データ)。
もし(NULL == m_pfrist)
{
m_pfrist =ノード。
}他{
ノード - > pNext = m_pfrist。
m_pfrist =ノード。
}
++によるm_il。
}
//印刷
テンプレート<typenameにU>
空マイリスト<U> ::ディスプレイ()
{
ノード<U>・ノード= m_pfrist。
しばらく(ノード!= NULL)
{
coutの<<ノード - > M_DATA <<てendl;
ノード=ノード - > pNext。
}
}
構造体STU
{
STU(CONST文字列名= "STU"、フロートスコア= 0.0):m_strName(名前)、m_fscore(スコア){}
文字列m_strName;
フロートm_fscore。
}。
ostream&演算子<<(ostreamに&OS、constのSTUのSTU)
{
OS << stu.m_strName <<」「<< stu.m_fscore <<てendl;
OSを返します。
}
メインint型()
{
マイリスト<STU> stull。
// ll.insert(88)。
stull.insert(STU( "JACK"、88.99));
stull.insert(STU( "ROSE"、88.99));
stull.insert(STU( "ジム"、33.99));
stull.display();
マイリスト<STU> :: Myiterator ITER。
ゲストstull.begin =();
(ITER ++!;; ITER = stull.end())について
{
coutの<< * ITER <<てendl;
}
}