stl中要通過迭代器得知下標值,需要用到distance()函式。
distance() 函式用於計算兩個迭代器表示的範圍內包含元素的個數,其語法格式如下:
template
typename iterator_traits::difference_type distance (inputiterator first, inputiterator last);
其中,first 和 last 都為迭代器,其型別可以是輸入迭代器、前向迭代器、雙向迭代器以及隨機訪問迭代器;該函式會返回[first, last)
範圍內包含的元素的個數。
注意,first 和 last 的迭代器型別,直接決定了 distance() 函式底層的實現機制:
另外,distance() 函式定義在標頭檔案,並位於 std 命名空間中。因此在使用此函式前,程式中應包含標頭檔案
。
測試用例1:
#includeusing namespace std;
struct s
};int main()
multiset::iterator it;
it=s.find(s1);
cout《測試用例2:
#includeusing namespace std;
struct s
};int main()
cout
STL中iterator迭代器
1 標頭檔案 所有容器有含有其各自的迭代器型別 iterator types 所以當你使用一般的容器迭代器時,並不需要含入專門的標頭檔案。不過有幾種特別的迭代器,例如逆向迭代器,被定義於中。2 迭代器型別 迭代器共分為五種,分別為 input iterator output iterator for...
STL中迭代器失效問題
對於vector deque等連續儲存的容器來說,插入元素 insert 或者刪除元素 erase 會導致後邊的迭代器都失效,解決方法是,erase iter 會返回下乙個有效迭代器的值,刪除元素時用將當前迭代器賦值為erase的返回值,系統會自動將迭代器的指向修改的。for iter cont.b...
STL中的迭代器分類
五類迭代器如下 1 輸入迭代器 唯讀,一次傳遞 為輸入迭代器預定義實現只有istream iterator和istreambuf iterator,用於從乙個輸入流istream中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...