heap



  • hy,
    ich habe in einem algorithmus den stl heap verwendet aus header datei <algorithm>

    so wird mein heap erstellt, OPEN ist ein Vektor von CPathNode

    make_heap( OPEN.begin(), OPEN.end());

    Ich definiere danach den Operator < und > wie folgt

    bool operator<(const CPathNode &a, const CPathNode &b)
    {
    return a.f < b.f;
    }

    ich bekoe dann jedoch die Felermeldung:

    instantiated from void std::\_\_pop\_heap(\_RandomAccessIterator, \_RandomAccessIterator, \_RandomAccessIterator, \_Tp) [with \_RandomAccessIterator = \_\_gnu\_cxx::\_\_normal\_iterator<CPathNode*, std::vector<CPathNode, std::allocator<CPathNode> > >, \_Tp = CPathNode]' /usr/include/c++/3.3.4/bits/stl\_heap.h:175: instantiated fromvoid std::pop_heap(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<CPathNode*, std::vector<CPathNode, std::allocator<CPathNode> > >]'

    und wiess garnix damit anzufangen, koennt ihr mir bitte helfen,
    danke
    geckoo



  • geckoo schrieb:

    instantiated from void std::\_\_pop\_heap(\_RandomAccessIterator, \_RandomAccessIterator, \_RandomAccessIterator, \_Tp) [with \_RandomAccessIterator = \_\_gnu\_cxx::\_\_normal\_iterator<CPathNode*, std::vector<CPathNode, std::allocator<CPathNode> > >, \_Tp = CPathNode]' /usr/include/c++/3.3.4/bits/stl\_heap.h:175: instantiated fromvoid std::pop_heap(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<CPathNode*, std::vector<CPathNode, std::allocator<CPathNode> > >]'

    das sind nicht die fehler, sondern nur, wer die funktion aufgerufenb hat, die nachher den fehler erzeugte.
    was haste für meldungen außer dennen mit "instantiated from" drin?



  • sorry, hier ist der error der ausgegeben wird

    /usr/include/c++/3.3.4/bits/stl_heap.h:141: error: no match for 'operator<' in
    '(&__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator+(typename
    std::iterator_traits<_Iterator>::difference_type&) const [with _Iterator =
    CPathNode*, _Container = std::vector<CPathNode, std::allocator<CPathNode>

    ]((&__secondChild)))->__gnu_cxx::__normal_iterator<_Iterator,
    _Container>::operator* [with _Iterator = CPathNode*, _Container =
    std::vector<CPathNode, std::allocator<CPathNode> >]() <
    (&__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator+(typename
    std::iterator_traits<_Iterator>::difference_type&) const [with _Iterator =
    CPathNode*, _Container = std::vector<CPathNode, std::allocator<CPathNode>
    ]((&(__secondChild - 1))))->__gnu_cxx::__normal_iterator<_Iterator,
    _Container>::operator* [with _Iterator = CPathNode*, _Container =
    std::vector<CPathNode, std::allocator<CPathNode> >]()'


Anmelden zum Antworten