【发布时间】:2017-10-10 16:18:48
【问题描述】:
在使用类 STL 接口的树类上工作时,我遇到了使用不可默认构造元素的问题:
在实现迭代器时,我需要在任何时间点都有一个过去最后一个元素。我的方法是在构造函数中创建一个,它断言值类型是默认可构造的。
有没有办法摆脱这个限制?
【问题讨论】:
-
新的安置可以避免你过早的建设......只是说
-
过去的结束元素不应该存在。
-
当你说过去的最后一个元素时,也许你的意思是一个
end元素,对于原始数组来说,它可能是一个指向最后一个元素的指针,但不是必须的。您可以使用一些哨兵类型来表示“结束”。 -
没有过去的元素是我的第一个方法。就基于指针的树而言,这自然是一个 nullptr。问题发生在我尝试实现双向迭代器的那一刻。我应该如何从过去的最后一个迭代器中找到最后一个元素?
-
一些STL实现采用的解决方案是有一个不包含任何元素的过去最后一个节点。 Tbis 需要有两种节点类型,通常来自一个共同的基础。