一 迭代器。
1 迭代器雖然不是一個通用指標,可是可以按照一個指標去運用。它只是指向數組(序列元素)的指標概念的一個抽象,它最關鍵的屬性:
-- "當前被指向的元素"
--指向下個元素。
--相等。
列入內部類型 int* 就是int[]的一個迭代器.
下面是我做的一個例子:
char c[] = "abcd";
make_heap<char*>(c, c+strlen(c) );//這裡模板class 應該是一個迭代器的,對於內部類型,指標就可以認為是迭代器。
2 迭代器的類別 及繼承關係.
2 迭代器特徵類---iterator_traits
有了iterator_traits,我們就可以寫出各種不依賴於迭代器參數性質的代碼。
例如:
template<class In,class T>
typename iterator_trains<In>::difference_type count(In first,In last,const T& val)
{
typename iterator_traits<In>::difference_type res =0;
while(first != last) if(*first++ = val) ++res;
return res;
}
3 插入器
將所產生的輸入通過迭代器放入一個容器,意味著跟隨在迭代器所指位置之後的元素就會被覆蓋掉。這也意味著一處和隨之而來的儲存破壞的可能性。
4 流迭代器。
--ostream_iterator
--istream_iterator
--ostreambuf_iterator
--istreambuf_iterator
//test the iterator of the stream.<br />void teststreamiterator()<br />{<br /> ostream_iterator<int>os(cout);<br /> *os++ = 10;<br /> *os = 20;<br />}