能否声明含指向同类pair指针的pair?是否有现成数据结构?
关于递归嵌套pair的声明与现成数据结构解答
能不能声明这类pair?
可以,但你给出的代码存在语法错误。正确的递归嵌套pair指针声明是合法的——C++允许将指针类型作为模板参数(指针类型大小固定,无需知道指向类型的完整定义)。
用typedef简化后的合法声明示例:
#include <utility> using RecursivePair = std::pair<int, RecursivePair*>; RecursivePair* p;
这段代码定义了一个pair:第一个元素是int类型,第二个元素是指向同类型pair的指针,完全符合你想要的递归嵌套结构。
有没有现成的对应数据结构?
C++标准库中没有提供这类递归嵌套的pair结构。这类结构的使用场景较窄,通常自定义结构体反而更清晰易维护。比如如果是用来实现链表或树形节点,直接定义结构体可读性更好:
struct IntNode { int val; IntNode* next; };
如果需要每个节点包含两个int值和一个递归指针,也可以扩展结构体:
struct DualIntNode { int first; int second; DualIntNode* next; };
这种自定义结构比递归pair更直观,也更容易进行后续逻辑扩展。
内容的提问来源于stack exchange,提问作者Uriel4
相关产品推荐
相关产品推荐

