vector<NODE>::iterator FindMin(vector<NODE> &vect)
{
vector<NODE>::iterator min = vect.begin();
vector<NODE>::iterator iter = vect.begin();
while(iter != vect.end())
{
if((*itor).Value < (*min).Value)
{
min = iter;
}
iter ++;
}
return min;
}
iterator的概念源自于對遍歷一個線性容器工具的抽象,即如何你能訪問這個容器的某個元素。對于最簡單的數組,當然可以用數組的索引值,因為數組是連續存放在內存中的;但對于鏈表,就必須用指針。除此之外,還有還有很多種數據結構需要提供一個方便的工具來訪問其中的元素,方法有ID,關鍵字等等。為了統一所有的容器的這種工具的使用,一般提供一整套容器的開發者就會用一種方式來表示各種容器的訪問工具。例如C++ STL就是使用iterator。MFC自己的容器使用position。C#和java也有自己的方法,但方法是不變的。
iterator的用法可以被統一,但不同的底層容器實現其iterator的原理是不一樣的。例如iterator++你可以理解為移動到容器的下一個元素,如果底層如果是數組,把索引值加一就行;如果底層是鏈表,就得執行類似于m_pCurrent = m_pCurrent->pNext;的操作。因此每種容器都有自己的iterator實現方法。
C++ STL iterator的常用方法有:
iterator++ 移到下個元素
iterator-- 移到上個元素
*iterator 訪問iterator所指元素的值]
< > == != iterator之間的比較,例如判斷哪個元素在前
iterator1 + iterator2 iterator之間的加法運算,類似于指針加法
posted on 2008-04-23 13:27
天書 閱讀(5017)
評論(0) 編輯 收藏 引用