C++自定义类型,可以通过实现begin和end作为成员函数,来支持基于范围的for循环
#include <iostream>
class D{
public:
int* begin()
{
return m_data;
}
int* end()
{
return m_data + 5;
}
private:
int m_data[5]{1, 2, 3, 4, 5};
};
int main()
{
D d;
for (int i : d)
{
std::cout << i << std::endl;
}
return 0;
}
运行程序输出:
1
2
3
4
5
C++20允许将begin和end做为非成员函数实现以支持基于范围的for循环:
#include <iostream>
class D{
public:
int m_data[5]{1, 2, 3, 4, 5};
};
int* begin(D& d)
{
return d.m_data;
}
int* end(D& d)
{
return d.m_data + 5;
}
int main()
{
D d;
for (int i : d)
{
std::cout << i << std::endl;
}
return 0;
}
运行程序输出:
1
2
3
4
5