gpt4 book ai didi

c++ - 如何定义递归类型?

转载 作者:IT老高 更新时间:2023-10-28 21:58:18 24 4
gpt4 key购买 nike

我想要一份 list 。列表中的条目将存储一个值以及指向列表中另一个条目的迭代器。如何定义这种类型?应该是这样的,但在语法上是正确的。

typedef list<pair<int, MyList::const_iterator>> MyList;

最佳答案

让我们用一些用户定义的类型来彻底解决这个问题,以打破声明的递归:

struct Node {
int _value;
std::list<Node>::const_iterator _next;
};

如果你想使用 typedef,你可以:

struct Node;
typedef std::list<Node> NodeList;

struct Node {
int _value;
NodeList::const_iterator _next;
};

编辑:作为 T.C.提醒我,实例化具有不完整类型的标准容器可能未定义的行为(一些标准库实现确实保证它不是)。 所以,让我们把所有的事情都推迟到以后再说吧。

编辑:那也无济于事。因此,请验证您的 std::list 实现是否支持不完整的类型(或相信它这样做,老实说它通常有效),或使用 Boost::containers。

template <class = void>
struct Node_ {
int _value;
typename std::list<Node_>::const_iterator _next;
};

typedef Node_<> Node;

关于c++ - 如何定义递归类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25563661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com