自定义基于范围的 For 循环的类型
要使自定义类型与基于范围的 for 循环一起使用,您可以指定 begin( ) 和 end() 方法适合您的类型。这些方法应返回迭代器,使循环能够迭代类型的元素。
命名空间注意事项
如果您的自定义类型属于命名空间,则应该定义该命名空间内的 begin() 和 end() 。例如,如果您的类型是 xml::my_type,则应定义 xml::begin() 和 xml::end() 以使其可供基于范围的 for 循环访问。
要求对于 begin() 和 end()
您定义的 begin() 和 end() 方法必须满足以下条件要求:
它们必须为基于范围的 for 循环正常运行提供必要的运算符和功能,包括以下内容:
实现 begin() 和 end 的两个选项()
有两种主要方法来实现 begin() 和end() 对于您的自定义类型:
示例:
考虑以下示例:
struct my_type { int data[5]; // Define begin() and end() as member functions int* begin() { return &data[0]; } int* end() { return &data[5]; } };
通过定义这些成员函数,现在可以迭代 my_type 的实例超过使用基于范围的 for 循环:
my_type mt; for (int& value : mt) { // Do something with each value in mt }
以上是如何使我的自定义类型与基于 C 范围的 For 循环配合使用?的详细内容。更多信息请关注PHP中文网其他相关文章!