C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何在我的课程中允许范围循环?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_673_0@
参见英文答案 > How to make my custom type to work with “range-based for loops”?7个
我有一个这样的课:
class Foo {
private:
    int a,b,c,d;
    char bar;
    double m,n
public:
    //constructors here
};

我想在课堂上允许使用范围循环,例如

Foo foo {/*...*/};
for(auto& f : foo) {
  //f will be a specific order such as c,d,(int)R_555_11845@,(int)bar,a,(int)n
}

我怎样才能做到这一点?我在看迭代器但不知道range-for循环的要求是什么. (请不要让我使用数组或STL类型)

解决方法

循环定义为等效于:
for ( auto __begin = <begin-expr>,__end = <end-expr>;
      __begin != __end;
      ++__begin ) {
    auto& f = *__begin;
    // loop body
}

其中< begin-expr>如果没有合适的成员函数,则为foo.begin()或begin(foo),对于< end-expr>同样如此. (这是C 11 6.5.4中规范的简化,对于这种特殊情况,其中范围是类类型的左值).

所以你需要定义一个支持预增量的迭代器类型,取消引用*它和比较i1!= i2;或者

>给foo公共成员函数begin()和end();要么>在与foo相同的命名空间中定义非成员函数begin(foo)和end(foo),以便可以通过参数依赖查找找到它们.

大佬总结

以上是大佬教程为你收集整理的c – 如何在我的课程中允许范围循环?全部内容,希望文章能够帮你解决c – 如何在我的课程中允许范围循环?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。