IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Différence entre les arêtes de deux graphes


Sujet :

Boost C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut Différence entre les arêtes de deux graphes
    Bonjour,

    J'utilise BOOST pour travailler sur un problème de graph mining.

    aprés la lécture création des graphes à partir d'un fichier du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    t # 0
    v 0 5
    v 1 3
    v 2 9
    e 2 1 68
    e 0 1 10
    e 0 2 4
    t # 1
    v 0 2
    v 1 11
    v 2 6
    v 3 10
    v 4 18
    v 5 14
    e 0 1 15
    e 2 5 19
    e 1 3 20
    t # 2
    v 0 6
    v 1 11
    e 0 1 13
    t # 3
    v 0 2
    v 1 11
    v 2 19
    v 3 2
    e 0 1 15
    e 1 2 11
    e 0 3 19
    t # 4
    v 0 1
    v 1 16
    v 2 14
    e 0 1 8
    e 1 2 5
    e 0 2 19
    j'essai de faire une fonction qui retourne la différence entre les arêtes de deux graphes dans un vector, voila la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    td::vector<edge_iter> edgesdiff(Graph const& g1,Graph const& g2){
     
    std::vector<edge_iter> model;
    std::vector<edge_iter> pattern;
     
    typedef graph_traits<Graph>::edge_iterator edge_iter;
    std::pair<edge_iter, edge_iter> ep;
     
    edge_iter ei, ei_end;
    for (tie(ei, ei_end) = edges(g1); ei != ei_end; ++ei){model.push_back(ei);}
    for (tie(ei, ei_end) = edges(g2); ei != ei_end; ++ei){model.push_back(ei);}
     
    std::set<edge_iter> s_model( model.begin(), model.end() );
    std::set<edge_iter> s_pattern( pattern.begin(), pattern.end() );
    std::vector<edge_iter> result;
     
    std::set_difference( s_model.begin(), s_model.end(), s_pattern.begin(), s_pattern.end(), std::back_inserter( result ) );
     
    return result;
    }
    Mais lorsque j'essai de compilé le programme (qui se trouve ici http://pastebin.com/xJnZHjgf)
    j'ai les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST/methodlire_v18.cpp||In function ‘void emptygraphaddedge(Graph&, std::vector<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, VertexProperties, EdgeProperties, GraphProperties> >)’:|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST/methodlire_v18.cpp|308|warning: operation on ‘cpt’ may be undefined [-Wsequence-point]|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST/methodlire_v18.cpp|308|warning: operation on ‘cpt’ may be undefined [-Wsequence-point]|
    /usr/include/boost/iterator/iterator_adaptor.hpp||In instantiation of ‘typename boost::detail::iterator_adaptor_base<Derived, Base, Value, Traversal, Reference, Difference>::type::difference_type boost::iterator_adaptor<Derived, Base, Value, Traversal, Reference, Difference>::distance_to(const boost::iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D>&) const [with OtherDerived = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; OtherIterator = std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >; V = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; C = boost::use_default; R = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; D = int; Derived = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; Base = std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >; Value = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Traversal = boost::use_default; Reference = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference = int; typename boost::detail::iterator_adaptor_base<Derived, Base, Value, Traversal, Reference, Difference>::type::difference_type = int]’:|
    /usr/include/boost/iterator/iterator_facade.hpp|551|required from ‘static typename Facade1::difference_type boost::iterator_core_access::distance_from(const Facade1&, const Facade2&, mpl_::true_) [with Facade1 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; Facade2 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; typename Facade1::difference_type = int; mpl_::true_ = mpl_::bool_<true>]’|
    /usr/include/boost/iterator/iterator_facade.hpp|835|required from ‘typename boost::detail::enable_if_interoperable<Derived1, Derived2, typename boost::mpl::apply2<boost::detail::always_bool2, Derived1, Derived2>::type>::type boost::operator<(const boost::iterator_facade<Derived1, V1, TC1, Reference1, Difference1>&, const boost::iterator_facade<Derived2, V2, TC2, Reference2, Difference2>&) [with Derived1 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; V1 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; TC1 = boost::bidirectional_traversal_tag; Reference1 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference1 = int; Derived2 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; V2 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; TC2 = boost::bidirectional_traversal_tag; Reference2 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference2 = int; typename boost::detail::enable_if_interoperable<Derived1, Derived2, typename boost::mpl::apply2<boost::detail::always_bool2, Derived1, Derived2>::type>::type = bool]’|
    /usr/include/c++/4.9/bits/predefined_ops.h|42|required from ‘bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _Iterator2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >]’|
    /usr/include/c++/4.9/bits/stl_algo.h|5169|required from ‘_OutputIterator std::__set_difference(_InputIterator1, _InputIterator1, _InputIterator2, _InputIterator2, _OutputIterator, _Compare) [with _InputIterator1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _InputIterator2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _OutputIterator = std::back_insert_iterator<std::vector<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’|
    /usr/include/c++/4.9/bits/stl_algo.h|5227|required from ‘_OIter std::set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter) [with _IIter1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _IIter2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _OIter = std::back_insert_iterator<std::vector<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> > >]’|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST/methodlire_v18.cpp|371|required from here|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|error: no match foroperator-’ (operand types are ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ andconst std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’)|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note: candidates are:|
    /usr/include/boost/iterator/iterator_facade.hpp|842|note: template<class Derived1, class V1, class TC1, class Reference1, class Difference1, class Derived2, class V2, class TC2, class Reference2, class Difference2> typename boost::detail::enable_if_interoperable<Derived1, Derived2, typename boost::mpl::apply2<boost::detail::choose_difference_type, Derived1, Derived2>::type>::type boost::operator-(const boost::iterator_facade<Derived1, V1, TC1, Reference1, Difference1>&, const boost::iterator_facade<Derived2, V2, TC2, Reference2, Difference2>&)|
    /usr/include/boost/iterator/iterator_facade.hpp|842|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const boost::iterator_facade<Derived1, V1, TC1, Reference1, Difference1>’|
    /usr/include/boost/concept_archetype.hpp|314|note: template<class Base> boost::subtractable_archetype<Base> boost::operator-(const boost::subtractable_archetype<Base>&, const boost::subtractable_archetype<Base>&)|
    /usr/include/boost/concept_archetype.hpp|314|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const boost::subtractable_archetype<Base>’|
    /usr/include/boost/concept_archetype.hpp|345|note: template<class Return, class BaseFirst, class BaseSecond> Return boost::operator-(const boost::subtract_op_first_archetype<Return, BaseFirst>&, const boost::subtract_op_second_archetype<Return, BaseSecond>&)|
    /usr/include/boost/concept_archetype.hpp|345|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const boost::subtract_op_first_archetype<Return, BaseFirst>’|
    /usr/include/c++/4.9/complex|446|note: template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&)|
    /usr/include/c++/4.9/complex|446|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::complex<_Tp>’|
    /usr/include/c++/4.9/complex|369|note: template<class _Tp> std::complex<_Tp> std::operator-(const _Tp&, const std::complex<_Tp>&)|
    /usr/include/c++/4.9/complex|369|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::complex<_Tp>’|
    /usr/include/c++/4.9/complex|360|note: template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const _Tp&)|
    /usr/include/c++/4.9/complex|360|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::complex<_Tp>’|
    /usr/include/c++/4.9/complex|351|note: template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const std::complex<_Tp>&)|
    /usr/include/c++/4.9/complex|351|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::complex<_Tp>’|
    /usr/include/c++/4.9/bits/stl_deque.h|347|note: template<class _Tp, class _RefL, class _PtrL, class _RefR, class _PtrR> typename std::_Deque_iterator<_Tp, _Ref, _Ptr>::difference_type std::operator-(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _RefR, _PtrR>&)|
    /usr/include/c++/4.9/bits/stl_deque.h|347|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::_Deque_iterator<_Tp, _Ref, _Ptr>’|
    /usr/include/c++/4.9/bits/stl_deque.h|335|note: template<class _Tp, class _Ref, class _Ptr> typename std::_Deque_iterator<_Tp, _Ref, _Ptr>::difference_type std::operator-(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _Ref, _Ptr>&)|
    /usr/include/c++/4.9/bits/stl_deque.h|335|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::_Deque_iterator<_Tp, _Ref, _Ptr>’|
    /usr/include/c++/4.9/bits/stl_bvector.h|208|note: std::ptrdiff_t std::operator-(const std::_Bit_iterator_base&, const std::_Bit_iterator_base&)|
    /usr/include/c++/4.9/bits/stl_bvector.h|208|note:   no known conversion for argument 1 from ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ to ‘const std::_Bit_iterator_base&’|
    /usr/include/c++/4.9/bits/stl_iterator.h|1128|note: template<class _Iterator> decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_Iterator>&, const std::move_iterator<_Iterator>&)|
    /usr/include/c++/4.9/bits/stl_iterator.h|1128|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::move_iterator<_Iterator>’|
    /usr/include/c++/4.9/bits/stl_iterator.h|1121|note: template<class _IteratorL, class _IteratorR> decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_Iterator>&, const std::move_iterator<_IteratorR>&)|
    /usr/include/c++/4.9/bits/stl_iterator.h|1121|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::move_iterator<_Iterator>’|
    /usr/include/c++/4.9/bits/stl_iterator.h|380|note: template<class _IteratorL, class _IteratorR> decltype ((__y.base() - __x.base())) std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)|
    /usr/include/c++/4.9/bits/stl_iterator.h|380|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::reverse_iterator<_Iterator>’|
    /usr/include/c++/4.9/bits/stl_iterator.h|328|note: template<class _Iterator> typename std::reverse_iterator<_Iterator>::difference_type std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)|
    /usr/include/c++/4.9/bits/stl_iterator.h|328|note:   template argument deduction/substitution failed:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|352|note:   ‘const std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >’ is not derived from ‘const std::reverse_iterator<_Iterator>’|
    /usr/include/boost/iterator/iterator_adaptor.hpp||In instantiation of ‘void boost::detail::iterator_adaptor_assert_traversal() [with Tr1 = boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::bidirectional_traversal_tag>; Tr2 = boost::random_access_traversal_tag]’:|
    /usr/include/boost/iterator/iterator_adaptor.hpp|347|required from ‘typename boost::detail::iterator_adaptor_base<Derived, Base, Value, Traversal, Reference, Difference>::type::difference_type boost::iterator_adaptor<Derived, Base, Value, Traversal, Reference, Difference>::distance_to(const boost::iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D>&) const [with OtherDerived = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; OtherIterator = std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >; V = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; C = boost::use_default; R = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; D = int; Derived = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; Base = std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >; Value = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Traversal = boost::use_default; Reference = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference = int; typename boost::detail::iterator_adaptor_base<Derived, Base, Value, Traversal, Reference, Difference>::type::difference_type = int]’|
    /usr/include/boost/iterator/iterator_facade.hpp|551|required from ‘static typename Facade1::difference_type boost::iterator_core_access::distance_from(const Facade1&, const Facade2&, mpl_::true_) [with Facade1 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; Facade2 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; typename Facade1::difference_type = int; mpl_::true_ = mpl_::bool_<true>]’|
    /usr/include/boost/iterator/iterator_facade.hpp|835|required from ‘typename boost::detail::enable_if_interoperable<Derived1, Derived2, typename boost::mpl::apply2<boost::detail::always_bool2, Derived1, Derived2>::type>::type boost::operator<(const boost::iterator_facade<Derived1, V1, TC1, Reference1, Difference1>&, const boost::iterator_facade<Derived2, V2, TC2, Reference2, Difference2>&) [with Derived1 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; V1 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; TC1 = boost::bidirectional_traversal_tag; Reference1 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference1 = int; Derived2 = boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int>; V2 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; TC2 = boost::bidirectional_traversal_tag; Reference2 = boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>; Difference2 = int; typename boost::detail::enable_if_interoperable<Derived1, Derived2, typename boost::mpl::apply2<boost::detail::always_bool2, Derived1, Derived2>::type>::type = bool]’|
    /usr/include/c++/4.9/bits/predefined_ops.h|42|required from ‘bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _Iterator2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >]’|
    /usr/include/c++/4.9/bits/stl_algo.h|5169|required from ‘_OutputIterator std::__set_difference(_InputIterator1, _InputIterator1, _InputIterator2, _InputIterator2, _OutputIterator, _Compare) [with _InputIterator1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _InputIterator2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _OutputIterator = std::back_insert_iterator<std::vector<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> > >; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’|
    /usr/include/c++/4.9/bits/stl_algo.h|5227|required from ‘_OIter std::set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter) [with _IIter1 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _IIter2 = std::_Rb_tree_const_iterator<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> >; _OIter = std::back_insert_iterator<std::vector<boost::detail::undirected_edge_iter<std::_List_iterator<boost::list_edge<unsigned int, EdgeProperties> >, boost::detail::edge_desc_impl<boost::undirected_tag, unsigned int>, int> > >]’|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST/methodlire_v18.cpp|371|required from here|
    /usr/include/boost/iterator/iterator_adaptor.hpp|224|error: static assertion failed: (is_convertible<Tr1, Tr2>::value)|
    ||=== Build failed: 2 error(s), 17 warning(s) (0 minute(s), 6 second(s)) ===|
    Comment régler ces problémes svp!

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Tu voudrais bien être un peu plus précis?
    Tu compares des itérateurs mais a priori ce sont plutôt les valeurs des arrêtes qui comptent?

    En tout cas les messages d'erreur du compilateur n'aident pas beaucoup, le problème est un opérateur - qui est nécessaire quelque part et n'est pas implémenté pour les types que tu utilises. Essaie quand même d'abord de simplifier un peu ton programme, ça pourrait l'éliminer.
    En particulier, je crois que tu peux choisir une représentation en forme de set au moment où tu crées ton graphe (avec le spécificateur setS dans le template).
    Du coup tu pourrais utiliser set_difference (presque) directement sur edges:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    edge_iterator mbeg, mend, pbeg, pend;
    tie(mbeg, mend) = edges(model);
    tie(pbeg, pend) = edges(pattern);
    std::set_difference etc
    .

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    Au fait, je voulais commencer par mettre les arrêtes du 1er graphe dans un VECTOR model.. mettre les arrêtes du 2eme graphe dans un autre VECTOR pattern...et après retourné la différence dans un autre VECTOR donc je veux juste retourné les éléments qui se trouve dans model et qui ne se trouve pas dans pattern (et vice versa) .

    @stendhal666 : dans mon cas je suis obligé de travailler avec vecS

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Alors je proposerais quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef (...) Edge; // à toi de remplir les parenthèses...
    typedef (...) edge_iterator;
     
    edge_iterator mbeg, mend, pbeg, pend;
    tie(mbeg, mend) = edges(g1);
    tie(pbeg, pend) = edges(g2);
     
    std::vector<Edge> model, pattern;
    std::for_each(mbeg, mend, [&](edge_iterator& it) { model.push_back(*it); } // déréférencement de l'itérateur pour avoir la valeur
    std::for_each(pbeg, pend, [&](edge_iterator& it) { pattern.push_back(*it); }
     
    std::sort(model.begin(), model.end()); // si operator<(Edge, Edge) est défini. Sinon ajouter une fonction de comparaison en troisième paramètre
    std::sort(pattern.begin(), pattern.end());
    std::set_difference etc // set_difference fonctionne pour n'importe quelle séquence triée.

Discussions similaires

  1. la difference entre les aretes de deux graphes
    Par mohsenuss91 dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2015, 11h02
  2. [XL-2003] la différence entre les lignes des deux feuilles dans la premiere ligne vide d'une des deux
    Par safouunette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2010, 10h20
  3. Différence entre les deux derniers fichiers d'un dossier.
    Par TiTiLeGrand dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/11/2008, 16h46
  4. Processeur ou MediaPlayer quelle différence entre les deux ?
    Par indepthsight dans le forum Multimédia
    Réponses: 1
    Dernier message: 14/01/2008, 22h12
  5. Réponses: 3
    Dernier message: 31/07/2007, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo