📄 fg__list_8h-source.html
字号:
00686 }00687 00688 <span class="comment">//##ModelId=3FD885070141</span><a name="l00693"></a><a class="code" href="classFG__BList.html#a3">00693</a> <span class="comment"></span> forward_iterator <a class="code" href="classFG__BList.html#a3">First</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_pFirst; }00694 00695 <span class="comment">//##ModelId=3FD885070142</span><a name="l00700"></a><a class="code" href="classFG__BList.html#a4">00700</a> <span class="comment"></span> back_iterator <a class="code" href="classFG__BList.html#a4">Last</a>() <span class="keyword">const</span> { <span class="keywordflow">return</span> m_pLast; }00701 00709 <span class="keyword">template</span> <<span class="keyword">class</span> ITERATOR><a name="l00710"></a><a class="code" href="classFG__BList.html#a5">00710</a> <span class="keywordtype">bool</span> <a class="code" href="classFG__BList.html#a5">Remove</a>(<span class="keyword">const</span> ITERATOR i) { <span class="keywordflow">return</span> <a class="code" href="classFG__BList.html#a5">Remove</a>((item *)i); }00711 00712 <span class="comment">//##ModelId=3FD88507014B</span><a name="l00720"></a><a class="code" href="classFG__BList.html#a6">00720</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classFG__BList.html#a6">Add</a>(item * <span class="keyword">const</span> pItem)00721 {00722 <span class="keywordflow">if</span> (! m_pFirst && ! m_pLast)00723 {00724 <span class="comment">// 容器为空</span>00725 m_pFirst = m_pLast = <span class="keyword">new</span> <a class="code" href="classFG__BList.html#w0">node</a>(pItem);00726 }00727 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m_pFirst && m_pLast)00728 {00729 <span class="comment">// 容器不为空,调整链表指针</span>00730 node * pNode = <span class="keyword">new</span> <a class="code" href="classFG__BList.html#w0">node</a>(pItem);00731 pNode->m_pPrev = m_pLast;00732 m_pLast->m_pNext = pNode;00733 m_pLast = pNode;00734 }00735 <span class="keywordflow">else</span>00736 {00737 <span class="comment">// 不可能发生的情况</span>00738 <span class="keywordflow">return</span> <span class="keyword">false</span>;00739 }00740 <span class="keywordflow">return</span> <span class="keyword">true</span>;00741 }00742 00743 <span class="comment">//##ModelId=3FD885070160</span><a name="l00752"></a><a class="code" href="classFG__BList.html#a7">00752</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classFG__BList.html#a5">Remove</a>(item * <span class="keyword">const</span> pItem)00753 {00754 node * pNode = m_pLast;00755 00756 <span class="keywordflow">while</span> (pNode)00757 {00758 <span class="keywordflow">if</span> (pNode->m_pItem == pItem)00759 {00760 <span class="comment">// 调整链表指针</span>00761 node * pPrev = pNode->m_pPrev;00762 node * pNext = pNode->m_pNext;00763 00764 <span class="keywordflow">if</span> (pPrev)00765 pPrev->m_pNext = pNext;00766 <span class="keywordflow">else</span>00767 m_pFirst = pNext;00768 00769 <span class="keywordflow">if</span> (pNext)00770 pNext->m_pPrev = pPrev;00771 <span class="keywordflow">else</span>00772 m_pLast = pPrev;00773 00774 <span class="keyword">delete</span> pNode;00775 <span class="keywordflow">return</span> <span class="keyword">true</span>;00776 }00777 <span class="keywordflow">else</span>00778 {00779 pNode = pNode->m_pPrev;00780 }00781 }00782 <span class="keywordflow">return</span> <span class="keyword">false</span>;00783 }00784 00785 <span class="comment">//##ModelId=3FD885070174</span><a name="l00792"></a><a class="code" href="classFG__BList.html#a8">00792</a> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classFG__BList.html#a8">RemoveAll</a>()00793 {00794 node * pNext, * pNode = m_pFirst;00795 00796 <span class="keywordflow">while</span> (pNode)00797 {00798 pNext = pNode->m_pNext;00799 <span class="keyword">delete</span> pNode;00800 pNode = pNext;00801 }00802 m_pFirst = m_pLast = <a class="code" href="group__Utility.html#ga11">NULL</a>;00803 <span class="keywordflow">return</span> <span class="keyword">true</span>;00804 }00805 00806 00807 <span class="keyword">private</span>:00808 <span class="comment">//##ModelId=3FD8850700F2</span><a name="l00809"></a><a class="code" href="classFG__BList.html#r0">00809</a> node * m_pFirst; 00810 <span class="comment">//##ModelId=3FD885070106</span><a name="l00811"></a><a class="code" href="classFG__BList.html#r1">00811</a> node * m_pLast; 00812 };00813 00822 <span class="keyword">template</span> <<span class="keyword">class</span> ITERATOR, <span class="keyword">class</span> ITEM><a name="l00823"></a><a class="code" href="group__Utility.html#ga9">00823</a> <span class="keywordtype">bool</span> <a class="code" href="group__Utility.html#ga9">FG_ListFind</a>(ITERATOR & i, <span class="keyword">const</span> ITEM * pItem)00824 {00825 <span class="keywordflow">for</span> (; ! i.IsDone(); ++ i)00826 {00827 <span class="keywordflow">if</span> (i == pItem)00828 <span class="keywordflow">return</span> <span class="keyword">true</span>;00829 }00830 <span class="keywordflow">return</span> <span class="keyword">false</span>;00831 }00832 00833 <span class="comment">//##ModelId=3FD88506033F</span>00840 <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">class</span> ITEM><a name="l00841"></a><a class="code" href="classFG__ListCheck.html">00841</a> <span class="keyword">class </span><a class="code" href="classFG__ListCheck.html">FG_ListCheck</a>00842 {00843 <span class="keyword">public</span>:00844 <span class="comment">//##ModelId=3FD885070372</span>00853 <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classFG__ListCheck.html#a0">FindIt</a>(<span class="keyword">const</span> ITEM * pItem) = 0;00854 };00855 00865 <span class="keyword">template</span> <<span class="keyword">class</span> ITERATOR, <span class="keyword">class</span> ITEM><a name="l00866"></a><a class="code" href="group__Utility.html#ga10">00866</a> <span class="keywordtype">bool</span> <a class="code" href="group__Utility.html#ga10">FG_ListFind_If</a>(ITERATOR & i, <a class="code" href="classFG__ListCheck.html">FG_ListCheck<ITEM></a> & check)00867 {00868 <span class="keywordflow">for</span> (; ! i.IsDone(); ++ i)00869 {00870 <span class="keywordflow">if</span> (check.<a class="code" href="classFG__ListCheck.html#a0">FindIt</a>(i))00871 <span class="keywordflow">return</span> <span class="keyword">true</span>;00872 }00873 <span class="keywordflow">return</span> <span class="keyword">false</span>;00874 }00875 00876 <span class="preprocessor">#endif </span><span class="comment">/* _FG_LIST_H_ */</span>00877 </pre></div><hr><center>由 DoxyGen 1.3.6 于 Wed Jun 9 22:34:40 2004 生成<br>版权所有 (C) 2003,2004 王咏武</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -