std::iterator 與 std::iterator_traits
阿新 • • 發佈:2020-08-09
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 |