微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在自定义链表类型的结构中实现自定义迭代器

如何解决在自定义链表类型的结构中实现自定义迭代器

我有一个使用 std::list 的链表,它是自定义类型“节点”(std::list<node>),它是通过

实现的
struct node {
    std::string pname;
    int time;
};

我想知道如何创建一个迭代器,以便我可以遍历我的链表,以便能够打印出“pname”和“time”的内容,或者如果不需要创建自定义迭代器这样做,想知道如何做到这一点。谢谢!

解决方法

这很简单。有点像这样:

#include <iostream>
#include <list>

struct node {
    std::string pname;
    int time;
};

int main()
{
    std::list<node> nodes {
        {"test 1",1},{"test 2",2},};

    for(auto& n: nodes) // range-based for
        std::cout << n.pname << ": " << n.time << '\n';

    // iterator 
    for(auto iter = std::begin(nodes); iter != std::end(nodes); ++iter)
        std::cout << iter->pname << ": " << iter->time << '\n';
}

输出:

test 1: 1
test 2: 2
test 1: 1
test 2: 2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。