gpt4 book ai didi

c++ - boost priority_queue 迭代器

转载 作者:行者123 更新时间:2023-11-30 02:34:48 26 4
gpt4 key购买 nike

我正在努力学习 Boost。我想看看 heap::priority_queue。

我正在尝试遍历优先级队列,但是我在处理用户定义的类型时遇到了困难。我注意到了

    boost::heap::priority_queue<int>::iterator it1; //works fine
boost::heap::priority_queue<myClass*>::iterator it2; //compiler error

第二个声明导致编译器错误

    error: no matching function call for call to boost::iterator_adapter...

这背后的原因是什么?

编辑 1:抱歉,我的意思是放下 myClass* 而不是相反,这已得到修复。在我这边滑倒。完整的错误信息是:

/usr/include/boost/heap/detail/stable_heap.hpp|534|error:
no matching function for call to
‘boost::iterator_adaptor<boost::heap::detail::stable_heap_iterator<
myClass*, __gnu_cxx::__normal_iterator<myClass* const*,
std::vector<myClass*, std::allocator<myClass*> > >,
boost::heap::detail::heap_base<myClass*, std::less<myClass*>, false, long unsigned int, false> >,
__gnu_cxx::__normal_iterator<myClass* const*, std::vector<myClass*, std::allocator<myClass*> > >,
myClass* const,
boost::random_access_traversal_tag,
boost::use_default,
boost::use_default>
::iterator_adaptor(int)’

编辑 2:假设 myClass 定义如下:

    class myClass
{
private:
int value;
public:
inline int getValue() { return this->value; }
inline void setValue(int v) { this->value = v; }
}

非常简单。

最佳答案

似乎 boost::heap::priority_queue 中的 iterator 类型不是默认可构造的。但是,您可以这样做:

typedef boost::heap::priority_queue<myClass*> queue_t;
queue_t queue;
queue_t::iterator it2 = queue.begin();

关于c++ - boost priority_queue 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294140/

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