如何在我的类中定义迭代器

How to define a iterator in my class

本文关键字:定义 迭代器 我的      更新时间:2023-10-16

我在C++中使用迭代器。太好了。但是我想在我的类中有一个我的迭代器。怎么办?

一个简单的例子

//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;
}

C++11 标准在标准的第 24 节中定义了迭代器的要求。因此,这里的简短回答是,您以满足迭代器要求的方式定义和实现iteratorconst_iterator类。

迭代器的要求在标准中占据了五页。显然,这不是可以用stackoverflow.com答案中的几小段话来概括的东西。

我建议你去图书馆或书店,找一本关于C++的书,浏览一下,看看它是否对迭代器及其需求进行了很好的实质性审查。然后尝试自己实现它们。