2016-02-14 56 views
1

我在C++中使用迭代器,它非常好,但我想在我的class.how中有一个迭代器?如何在我的类中定义一个迭代器

一个简单的例子

//a simple container 
class MyArray 
{ 
public: 
    MyArray() 
    { 
     for(int i=0;i<10;i++) 
      data[i] = 0; 
    } 

    int GetValue(int index) 
    { 
     if(index>=10 || index<0) 
      return -1; 
     else 
      return data[index]; 
    } 

    bool SetValue(int value, int index) 
    { 
     if(index>=10 || index<0) 
      return false; 
     data[index] = value; 
    } 

    int& operator[](int index) 
    { return data[index]; } 

    void ShowData(); 
protected: 
    int data[10]; 
private: 
}; 

// only test use 
void MyArray::ShowData() 
{ 
    std::cout<<"Data : "; 
    for(int i =0;i<10;i++) 
    { 
     std::cout<<data[i]<<" "; 
    } 
    std::cout<<std::endl; 
} 

int main() 
{ 
    MyArray array; 

    MyArray::iterator it = array.begin(); //how to implementation? 

    getchar(); 
    return 0; 
} 
+1

[如何正确实现自定义迭代器和const \ _iterator?](http://stackoverflow.com/questions/3582608/how-to-correctly-implement-custom-iterators-and-const-iterators) – Abhijeet

+1

如果你想要便宜的方式,一个指针会被视为一个随机访问迭代器。除偶尔的标准库函数只适用于迭代器对象外,还可以使用指针。 –

回答

0

的C++ 11标准定义了在标准的部分24的迭代器的要求。所以,这里的简短答案是让您以满足迭代器要求的方式定义和实现iteratorconst_iterator类。

迭代器的需求在标准中占用五个简洁页面。显然,这不是在stackoverflow.com答案的几个短段落中可以概括的内容。

我建议您访问图书馆或书店,在C++上查找详尽的书籍,浏览它,并查看它是否提供了迭代器及其要求的良好实质性审查。然后尝试自己实现它们。