1. 程式人生 > 實用技巧 >std::iterator 與 std::iterator_traits

std::iterator 與 std::iterator_traits

std::iterator

std::iterator 是一個模板類,其宣告為:

template< 
    class Category,
    class T,
    class Distance = std::ptrdiff_t,
    class Pointer = T*,
    class Reference = T& 
> struct iterator;

std::iterator 是為簡化迭代器所需型別的定義而提供的基類。也就是說當我們寫一個模板類時,需要定義自己的迭代器 iterator,那麼我們可以將 std::iterator 作為自定義迭代器的基類。
std::iterator

的模板引數:

  • Category: 型別為 iterator_category,表示迭代器的種類,共有5類:
    | 迭代器 | 型別 | 型別引數 |
    | -------------- | ---------- | -------- |
    | input_iterator | 輸入迭代器 | input_iterator_tag |
    | output_iterator | 輸出迭代器 | output_iterator_tag |
    | forward_iterator | 前向迭代器 | forward_iterator_tag |
    | bidirectional_iterator | 雙向迭代器 | bidirectional_iterator_tag |
    | random_access_iterator | 隨機訪問迭代器 | random_access_iterator_tag |