在列表迭代器中设置下一个对象

用户名
list<Book>::iterator pos;
    pos = books.begin();

    books.begin()->setPrevBook(NULL);

    for (pos = books.begin(); pos != books.end(); pos++)
    {
        cout << book.getTitle() << "\n"
            << book.getAuthor() << "\n"
            << book.getISBN() << "\n"

            //I'd like to set the next and previous books here
            //<< book.setNextBook()
              //<<book.setPrevBook()
            << "******************************" << endl;
    }

这是我的书的迭代器,我的程序经过循环,直到用户告诉它停止,然后打印出所有书。

我的书也有此代码

void Book::setNextBook(Book* nextBookParam)
{
    nextBook = nextBookParam;
}

Book* Book::getNextBook() const
{
    return nextBook;
}

void Book::setPrevBook(Book* prevBookParam)
{
    prevBook = prevBookParam;
}

Book* Book::getPrevBook() const
{
    return prevBook;
}

我想在列表迭代器中完成的工作是,当它完成添加新书时,将下一本书添加到要添加的书中,将上一本书添加到刚刚添加的书中。本质上,我想将所有书籍链接在一起。

有没有办法我可以做到这一点?

任何帮助表示赞赏。

Angew不再为SO感到骄傲

如果我对您的理解正确,那么您正在尝试books使用存储在Book类中的指针重新创建双向链接列表这似乎有点浪费精力,但是如果需要,您有两种选择。

  1. 您可以在循环中使用额外的迭代器来指向“最后一本书”:

    list<Book>::iterator pos, last;
    books.begin()->setPrevBook(NULL);
    for (pos = books.begin(); pos != books.end(); ++pos)
    {
        cout << pos->getTitle() << "\n"
            << pos->getAuthor() << "\n"
            << pos->getISBN() << "\n"
            << "******************************" << endl;
        if (pos != books.begin())
        {
          last->setNextBook(&*pos);
          pos->setPrevBook(&*last);
        }
        last = pos;
    }
    books.back().setNextBook(NULL);
    
  2. 使用指向最后一本书的指针而不是迭代器:

    list<Book>::iterator pos;
    books.begin()->setPrevBook(NULL);
    Book *last = NULL;
    for (pos = books.begin(); pos != books.end(); ++pos)
    {
        cout << pos->getTitle() << "\n"
            << pos->getAuthor() << "\n"
            << pos->getISBN() << "\n"
            << "******************************" << endl;
        if (last)
        {
          last->setNextBook(&*pos);
          pos->setPrevBook(last);
        }
        last = &*pos;
    }
    books.back().setNextBook(NULL);
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何设置计时器以转到列表中的下一个项目?

来自分类Dev

C ++在下一个定界符递归之后设置迭代器?

来自分类Dev

列出元素的下一个迭代器

来自分类Dev

Tensorflow 迭代器下一个值

来自分类Dev

获取Groovy中的下一个迭代器值

来自分类Dev

如何在JavaScript迭代器中窥视下一个值

来自分类Dev

在向量中插入下一个值以使用迭代器进行映射

来自分类Dev

如何迭代Ruby中的下一个元素?

来自分类Dev

在C#列表的下一个列表项中基于StartDate设置EndDate

来自分类Dev

获取具有当前ID的对象之后列表中的下一个对象

来自分类Dev

如何获取对象列表中的下一个对象?

来自分类Dev

用下一个迭代中重复的最后一个元素进行迭代

来自分类Dev

设置下一个指针时,循环链接列表中的C分段错误

来自分类Dev

如何在Java的循环链接列表中设置下一个值?

来自分类Dev

列表中的下一个元素

来自分类Dev

给班级到列表中的下一个项目

来自分类Dev

jQuery在列表中查找下一个类

来自分类Dev

给班级到列表中的下一个项目

来自分类Dev

在列表中查找下一个缺失的数字

来自分类Dev

获取对象中的“下一个”数值

来自分类Dev

访问对象中的下一个日期

来自分类Dev

获取当前迭代中每个函数的下一个迭代值 Jquery

来自分类Dev

无法检索下一个对象:在共享的云端硬盘上进行迭代时,迭代器已达到结束错误

来自分类Dev

如何实现字典对象可迭代的“下一个”?

来自分类Dev

根据与上一个和下一个项目的关系进行迭代时从列表中删除项目

来自分类Dev

在“迭代器”中使用“下一个”并获得类型不匹配错误

来自分类Dev

为什么迭代器没有在for循环中“移动下一个”

来自分类Dev

转到基于范围的for循环中的下一个迭代器

来自分类Dev

二叉搜索树有序迭代器下一个方法

Related 相关文章

  1. 1

    如何设置计时器以转到列表中的下一个项目?

  2. 2

    C ++在下一个定界符递归之后设置迭代器?

  3. 3

    列出元素的下一个迭代器

  4. 4

    Tensorflow 迭代器下一个值

  5. 5

    获取Groovy中的下一个迭代器值

  6. 6

    如何在JavaScript迭代器中窥视下一个值

  7. 7

    在向量中插入下一个值以使用迭代器进行映射

  8. 8

    如何迭代Ruby中的下一个元素?

  9. 9

    在C#列表的下一个列表项中基于StartDate设置EndDate

  10. 10

    获取具有当前ID的对象之后列表中的下一个对象

  11. 11

    如何获取对象列表中的下一个对象?

  12. 12

    用下一个迭代中重复的最后一个元素进行迭代

  13. 13

    设置下一个指针时,循环链接列表中的C分段错误

  14. 14

    如何在Java的循环链接列表中设置下一个值?

  15. 15

    列表中的下一个元素

  16. 16

    给班级到列表中的下一个项目

  17. 17

    jQuery在列表中查找下一个类

  18. 18

    给班级到列表中的下一个项目

  19. 19

    在列表中查找下一个缺失的数字

  20. 20

    获取对象中的“下一个”数值

  21. 21

    访问对象中的下一个日期

  22. 22

    获取当前迭代中每个函数的下一个迭代值 Jquery

  23. 23

    无法检索下一个对象:在共享的云端硬盘上进行迭代时,迭代器已达到结束错误

  24. 24

    如何实现字典对象可迭代的“下一个”?

  25. 25

    根据与上一个和下一个项目的关系进行迭代时从列表中删除项目

  26. 26

    在“迭代器”中使用“下一个”并获得类型不匹配错误

  27. 27

    为什么迭代器没有在for循环中“移动下一个”

  28. 28

    转到基于范围的for循环中的下一个迭代器

  29. 29

    二叉搜索树有序迭代器下一个方法

热门标签

归档