C++(20):自定义类型实现基于范围的for循环

C++自定义类型,可以通过实现begin和end作为成员函数,来支持基于范围的for循环

#include 

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 

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

你可能感兴趣的:(C/C++,c++)