如何在我的类中定义迭代器
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 节中定义了迭代器的要求。因此,这里的简短回答是,您以满足迭代器要求的方式定义和实现iterator
和const_iterator
类。
迭代器的要求在标准中占据了五页。显然,这不是可以用stackoverflow.com
答案中的几小段话来概括的东西。
我建议你去图书馆或书店,找一本关于C++的书,浏览一下,看看它是否对迭代器及其需求进行了很好的实质性审查。然后尝试自己实现它们。
相关文章:
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 无法使用自定义迭代器进行排序
- 指向临时对象的自定义迭代器(延迟加载)
- MSVC++ 17 std::copy 期望自定义迭代器的"operator -"
- 在 stl 容器包装器中定义迭代器类型
- 如何使用提升范围将自定义迭代器封装在函数中
- 如何将 std::num_put 与自定义迭代器一起使用?
- 自定义迭代器:如果 a 和 b 的行为不同,如何正确处理距离计算和相等比较
- std::sort 在我的自定义迭代器上不起作用
- 定义将函数调用到传递的元素的自定义迭代器
- C++17 pimpl 习语上下文中的自定义迭代器
- C++自定义迭代器和(*this)
- 如何使用自定义迭代器使用std :: lower_bound
- 自定义迭代器而不是解释问题
- 基于范围的自定义迭代器:constness问题
- 在自定义双链接列表中的自定义迭代器的取消运算符,找不到二进制操作员
- 创建自定义迭代器结构以与CSTDIO一起使用
- 矩阵类的C 自定义迭代器
- 自定义迭代器越界
- 矢量<struct>的自定义迭代器