C 自定義迭代器 實現 遞增兩格

2021-08-03 02:23:03 字數 1443 閱讀 9769

//效果每次迭代器加移動兩格

#pragma once

#include

#include

template

class myiterator :public

std::iterator<:random_access_iterator_tag typename container::value_type>

myiterator(const myiterator& rhs) :container(rhs.container),pos(rhs.pos) {}

myiterator& operator =(const myiterator& rhs)

//--等就省略了...

myiterator& operator ++()

bool

operator ==(const myiterator& rhs)const

}catch (exception &e)

}bool

operator !=(const myiterator& rhs)const

typename container::value_type & operator *()

void begin()

void end()

private:

void throw_ex(const container& c)

catch (exception &e)

}};//無法使用或新增vectorvec 成員函式vec.begin()或全域性函式begin(vec)

//我們做個假冒的全域性函式 start(vec) over(vec)

template

myiteratorstart(container& c)

template

myiteratorover(container & c)

#include 

#include

#include "myiterator.h"

#include

using

namespace

std;

//因繼承了iterator才擁有此特性

template

void printiterator(const iterator &it)

int main()

; myiterator myit(coll);

printiterator(myit);

for (; myit != over(coll); ++myit)

system("pause");

return

0;}

效果:

C 自定義迭代器

讓我們在示例中看乙個簡單迭代器型別的定義。我們定義乙個類模板,用來表示一段數值型別值,也可以生成指定範圍的開始和結束迭代器。這個迭代器也是模板型別,兩個模板都定義在同乙個標頭檔案 numeric range.h 中。下面是 numeric range模板的定義 template class nume...

c 自定義迭代器練習

include include include include includeusing namespace std 第乙個型別引數可選的值為如下幾種 struct input iterator tag 唯讀 struct mutable iterator tag 只寫 struct output ...

C 自定義迭代器(STL)

一.iterator traits 迭代器萃取機 include template struct iterator traits 假如我們定義了乙個迭代器myiterator template void my swap iter a,iter b 當函式 以乙個迭代器為引數時,會出現這樣乙個尷尬,t...