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

C++ Discussion :

la difference entre deux std::vector


Sujet :

C++

Vue hybride

mohsenuss91 la difference entre deux... 25/03/2015, 09h44
ternel Quand on a un problème... 25/03/2015, 10h01
mohsenuss91 voila ce que j'ai fais: ... 25/03/2015, 10h37
stendhal666 C'est toujours la galère de... 25/03/2015, 13h39
ternel à moins d'utiliser la seconde... 25/03/2015, 13h48
mohsenuss91 comment dois je faire pour... 25/03/2015, 14h10
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    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
    Par défaut la difference entre deux std::vector
    onjour !!! j'utilise BOOST pour un probléme de graphe mining.
    le programme complet se trouve ici : http://pastebin.com/8NejJvcx

    Je voulais faire une fonction qui a comme arguments deux graphes et qui retourne un vector , ce vector contient la difference entre les aretes des deux graphes.
    voila ce que j'ai fais jusqu’à maintenant :

    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
    std::vector<edge_iter> edgesdiff(Graph const& g1,Graph const& g2){
     
    std::vector<edge_iter> v1;
    std::vector<edge_iter> v2;
    std::vector<edge_iter> result;
     
    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){v1.push_back(ei);}
    for (tie(ei, ei_end) = edges(g2); ei != ei_end; ++ei){v2.push_back(ei);}
     
    /* d i f f e r e n c e*/
    return result;
    }
    il manque la partie /* d i f f e r e n c e*/ ou je veux faire la difference entre v1 et v2 et l'inserer dans result.
    Par difference je veux dire les elements qui sont dans v1 et ne sont pas dans v2 et vice-versa.

    Aidez moi a compléter le programme svp!

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Quand on a un problème d'algorithme, on regarde ce que propose <algorithm>.

    Tu veux la différence entre deux ensembles de valeurs.
    Ca tombe bien, il y a ce qu'il faut: set_symmetric_difference.

  3. #3
    Membre très actif
    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
    Par défaut
    Citation Envoyé par leternel Voir le message
    Quand on a un problème d'algorithme, on regarde ce que propose <algorithm>.

    Tu veux la différence entre deux ensembles de valeurs.
    Ca tombe bien, il y a ce qu'il faut: set_symmetric_difference.
    voila ce que j'ai fais:
    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
    std::vector<edge_iter> edgesdiff(Graph const& g1,Graph const& g2){
     
    std::vector<edge_iter> v1;
    std::vector<edge_iter> v2;
    std::vector<edge_iter> result;
     
    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){v1.push_back(ei);}
    for (tie(ei, ei_end) = edges(g2); ei != ei_end; ++ei){v2.push_back(ei);}
     
    std::sort(v1.begin(), v1.end());
    std::sort(v2.begin(), v2.end());
     
    /*
        std::set_symmetric_difference(
            v1.begin(), v1.end(),
            v2.begin(), v2.end(),
            std::back_inserter(result));
     
    */
    return result;
    }
    mais ça me donne des erreurs 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
    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
    64
    65
    66
    67
    /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 = __gnu_cxx::__normal_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>*, 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> > >; _Iterator2 = __gnu_cxx::__normal_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>*, 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> > >]’|
    /usr/include/c++/4.9/bits/stl_algo.h|1846|required from ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|1884|required from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|1970|required from ‘void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|4685|required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_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>*, 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|368|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 = __gnu_cxx::__normal_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>*, 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> > >; _Iterator2 = __gnu_cxx::__normal_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>*, 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> > >]’|
    /usr/include/c++/4.9/bits/stl_algo.h|1846|required from ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|1884|required from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|1970|required from ‘void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_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>*, 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|4685|required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_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>*, 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|368|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), 21 warning(s) (0 minute(s), 6 second(s)) ===|

  4. #4
    Membre Expert

    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
    Billets dans le blog
    21
    Par défaut
    C'est toujours la galère de s'y retrouver dans les messages d'erreur du compilateur. Cela étant, il y a toujours ce problème dans ton code que tu mets des itérateurs, pas des valeurs dans les vecteurs.
    Or je ne pense pas qu'il soit possible de trier des itérateurs de graphe: en particulier iterator1 < iterator2 ne compile que pour des random_access_iterator

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    à moins d'utiliser la seconde forme de la fonction, qui prend un comparateur en argument.
    par exemple [](edge_iter const& a, edge_iter const& b) {return *a<*b;}

  6. #6
    Membre très actif
    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
    Par défaut
    Citation Envoyé par stendhal666 Voir le message
    C'est toujours la galère de s'y retrouver dans les messages d'erreur du compilateur. Cela étant, il y a toujours ce problème dans ton code que tu mets des itérateurs, pas des valeurs dans les vecteurs.
    Or je ne pense pas qu'il soit possible de trier des itérateurs de graphe: en particulier iterator1 < iterator2 ne compile que pour des random_access_iterator
    comment dois je faire pour mettre des valeurs au lieux des littérateurs svp!

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Avec un vecteur de edge, plutot qu'un vecteur de edge_iterator, peut-être?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la difference entre deux std::unordered_set
    Par mohsenuss91 dans le forum C++
    Réponses: 7
    Dernier message: 21/04/2015, 17h30
  2. Réponses: 7
    Dernier message: 03/02/2006, 13h50
  3. [EXCEL] difference entre deux fichiers
    Par Mokhtar BEN MESSAOUD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2006, 11h12
  4. [PIL] Difference entre deux images
    Par t_om84 dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 26/12/2005, 12h45
  5. difference entre deux requetes
    Par rdams dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/12/2005, 09h38

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