在自定义链表类型的结构中实现自定义迭代器
Implementing custom iterator in struct for custom linked list type
我有一个使用 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
我有一个使用 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