C++迭代器庫 - <iterator>



描述

它是一個迭代器基類。

宣告

以下是std::iterator的宣告。

C++11

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

引數

  • T − 指示元素的型別。

  • Distance − 表示兩個迭代器之間的差值。

  • Pointer − 表示指向迭代器指向的元素的指標。

  • Reference − 表示指向迭代器指向的元素的引用。

返回值

異常

如果在對x應用一元運算子&時以某種方式丟擲異常,則此函式永不丟擲異常。

時間複雜度

對於隨機訪問迭代器為常數。

示例

以下示例演示了std::iterator的使用。

#include <iostream>     
#include <iterator>     

class MyIterator : public std::iterator<std::input_iterator_tag, int> {
   int* p;
public:
   MyIterator(int* x) :p(x) {}
   MyIterator(const MyIterator& mit) : p(mit.p) {}
   MyIterator& operator++() {++p;return *this;}
   MyIterator operator++(int) {MyIterator tmp(*this); operator++(); return tmp;}
   bool operator==(const MyIterator& rhs) {return p==rhs.p;}
   bool operator!=(const MyIterator& rhs) {return p!=rhs.p;}
   int& operator*() {return *p;}
};

int main () {
   int numbers[] = {1,2,3,4,5};
   MyIterator from(numbers);
   MyIterator until(numbers+5);
   for (MyIterator it = from; it!=until; it++)
      std::cout << *it << ' ';
   std::cout << '\n';

  return 0;
}

讓我們編譯並執行上面的程式,這將產生以下結果:

1 2 3 4 5
iterator.htm
廣告