繁体   English   中英

如何在我的课程中定义迭代器

[英]How to define a iterator in my class

我在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 ++的详尽书籍,进行浏览,看看它是否对迭代器及其要求提供了很好的实质性审查。 然后尝试自己实现它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM