加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Iterator等效于C? (带代码)

发布时间:2020-05-24 05:34:25 所属栏目:Java 来源:互联网
导读:大家好.一位朋友为我编写了一些Java代码,我很容易将其转换为C,但我对C中的Java迭代器的等价物非常好奇.这是代码,我很可能希望将数据返回到向量中.任何帮助表示赞赏public class RLEIterator extends RegionIterator { public int reg = 0; public int mode =

大家好.一位朋友为我编写了一些Java代码,我很容易将其转换为C,但我对C中的Java迭代器的等价物非常好奇.这是代码,我很可能希望将数据返回到向量中.任何帮助表示赞赏

public class RLEIterator
extends RegionIterator
{
    public int reg = 0;
    public int mode = 0;
    public int skip = 0;
        // mode is the number of IDs that are valid still (count down)
        // skip is used after we run out of mode IDs,and move forward
        //   The goal is,to always have a valid 'hasNext' state,after
        // an ID is read via 'next'. Thus,the initial search,and then
        // the reading forward if mode == 0,after the ID is found.
    public int i;

    public RLEIterator()
    {
        // Need to set up the skip of an initial part,so we can
        // correctly handle there not being anything,despite there
        // being data encoded.

        int comp;
        i = 0;

        while ((mode == 0) && (i

再一次,任何有关如何适应C中单个函数(如果可能)的方案的帮助都会很棒.谢谢! 最佳答案 您对C迭代器有多熟悉?它们的设计看起来非常像指针,因此给定一个迭代器:

++it

将增加迭代器(跳到下一个元素)

*it

将取消引用迭代器(返回它指向的元素的引用)

--it

将(如果它被定义)减少迭代器(返回上一个元素)

通常,C迭代器对它们所操作的容器一无所知.特别是,检查序列中是否还有更多元素的方法不是在迭代器上调用HasNext,而是将它与您知道指向序列末尾的迭代器进行比较. (或者,严格地说,将它与指向序列末尾的元素进行比较.)

除此之外,迭代器需要定义一些typedef和其他辅助内容,以帮助编译器对迭代器的功能进行分类和理解.

定义迭代器的最简单方法是使用Boost.Iterator库的iterator_facade类,它实现了几乎所有的管道.该库具有出色的文档,包括描述如何定义自己的迭代器类型的教程.

如果使用Boost是一个选项,你一定要去做.否则,标准库有std :: iterator也有一点帮助(但是,值得注意的是,不是必需的 – 迭代器可以完全有效地定义而不从这个类派生)

对不起,我没有写完一个完整的例子,但我现在有点急. (而且,如果你能够使用Boost,那么从头开始定义一个示例迭代器就会浪费时间).希望以上内容足以让您入门.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读