我在C ++中使用iterator。它非常好。但我想在我的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;
}
答案 0 :(得分:0)
C ++ 11标准在标准的第24节中定义了迭代器的要求。因此,这里简短的回答是您以满足迭代器要求的方式定义和实现iterator
和const_iterator
类。
迭代器的要求在标准中占用五个页面。显然,这不是可以在stackoverflow.com
答案中的几个简短段落中概括的内容。
我建议您访问图书馆或书店,查找有关C ++的全面书籍,浏览它,看看它是否提供了对迭代器及其要求的良好,实质性的评论。然后尝试自己实现它们。