1. 程式人生 > 實用技巧 >16.4.2 迭代器型別

16.4.2 迭代器型別

STL定義了五種迭代器:

  1. 輸入迭代器 InputIterator
    •  解除引用用於程式向容器讀取內容,一般不允許修改值
    • 支援++運算子(字首和字尾)
    •  輸入迭代器是單向迭代器,可以遞增,但不能倒退
  2. 輸出迭代器 OutputIterator
    •  解除引用讓程式修改容器值,但不能讀取
    • 其餘部分與輸入迭代器相似(單通行、遞增等)
  3. 正向迭代器 ...
    •  單通行、遞增(使用++)
    • 既可以讀取和修改(*),也可以只讀(const *)
  4. 雙向迭代器 ...
    •  雙向迭代器具有正向迭代器的所有特性
    • 支援兩種(字首和字尾)遞減運算子
  5. 隨機訪問迭代器 RandomAccessIterator
    •  支援雙向迭代器的所有特性
    • 支援隨機訪問的操作(如指標增加運算)
    • 支援用於對元素進行排序的關係運算符

並根據所需的迭代器型別對演算法進行了描述:

template<class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last, const T & value);
template<class RandomAccessIterator>
void sort(RandomAccessIterator first, RandomAccessIterator last);

對於這五種迭代器,都可以執行解除引用操作(*),也可進行比較(==、!=)