gpt4 book ai didi

c++ - 有没有办法将 std::stack 转换为 std::stack

转载 作者:行者123 更新时间:2023-11-28 07:56:08 34 4
gpt4 key购买 nike

这里是一些背景。我有一个二叉树迭代器(按顺序说)。它通过将指针推到堆栈顶部来跟踪其当前节点的父节点。现在我还想要互操作性,即转换 iterator 的能力至 const_iterator .但是iteratorstd::stack<pointer>const_iteratorstd::stack<const pointer> .

也欢迎任何其他实现相同效果的方法。

编辑

目前我已经放弃了使用 std::stack 的想法完全。我正在使用 std::dequepush_back() + pop_back() + back() .用于转换 std::deque<pointer>std::deque<const pointer> , 我正在使用 std::copy( std::begin(ptrDeque), std::end(ptrDeque), std::begin(constPtrDeque) );这个设置很简单

出于好奇,我仍然想要这个问题的答案。

最佳答案

只需在您的 const_iterator 中保留一个非常量堆栈。它是一个私有(private)数据成员,所以它并不重要。

确保您的 const_iterator 实现不会通过指针进行修改。为了双重确定,请始终使用您的 const_iterator 自己的 operator*() ,它应该返回一个 const 引用。 (实际上,我认为您不需要取消对指针的引用太多,但如果您这样做,那就是您应该这样做的方式。)

关于c++ - 有没有办法将 std::stack<pointer> 转换为 std::stack<const pointer>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12685045/

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