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 :

un programme divisé sur plusieur fichiers


Sujet :

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 un programme divisé sur plusieur fichiers
    Bonsoir, suite à un problème d'allocation de mémoire dans ce programme:
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    #include <boost/graph/adjacency_list.hpp>
    #include <boost/graph/vf2_sub_graph_iso.hpp>
    #include <boost/algorithm/string/split.hpp>
    #include <boost/algorithm/string/classification.hpp>
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <ctime>
    #include <queue> // std::queue
    // for mmap:
    #include <sys/mman.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    using namespace std;
    using namespace boost;
     
    //==========STRUCTURES==========
    // vertex
    struct VertexProperties {
        int id;
        int label;
        VertexProperties(unsigned i = 0, unsigned l = 0) : id(i), label(l) {}
    };
     
    // edge
    struct EdgeProperties {
        unsigned id;
        unsigned label;
        EdgeProperties(unsigned i = 0, unsigned l = 0) : id(i), label(l) {}
    };
     
    // Graph
    struct GraphProperties {
        unsigned id;
        unsigned label;
        GraphProperties(unsigned i = 0, unsigned l = 0) : id(i), label(l) {}
    };
     
    // adjency list
    typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, VertexProperties, EdgeProperties,
                                  GraphProperties> Graph;
     
    // descriptors
     
    typedef boost::graph_traits<Graph>::vertex_descriptor vertex_t;
    typedef std::pair<boost::graph_traits<Graph>::edge_descriptor, bool> edge_t;
    // iterators
    typedef graph_traits<Graph>::vertex_iterator vertex_iter;
    typedef graph_traits<Graph>::edge_iterator edge_iter;
    typedef std::pair<edge_iter, edge_iter> edge_pair;
    //=================callback used fro subgraph_iso=================================================================
    struct my_callback {
        template <typename CorrespondenceMap1To2, typename CorrespondenceMap2To1>
        bool operator()(CorrespondenceMap1To2 f, CorrespondenceMap2To1 g) const {
            return false;
        }
    };
     
    //==========handle_error==========
    void handle_error(const char *msg) {
        perror(msg);
        exit(255);
    }
    //============READ ALL THE FILE AND RETURN A STRING===================
    const char *readfromfile(const char *fname, size_t &length) {
        int fd = open(fname, O_RDONLY);
        if (fd == -1)
            handle_error("open");
     
        // obtain file size
        struct stat sb;
        if (fstat(fd, &sb) == -1)
            handle_error("fstat");
     
        length = sb.st_size;
     
        const char *addr = static_cast<const char *>(mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, 0u));
        if (addr == MAP_FAILED)
            handle_error("mmap");
     
        // TODO close fd at some point in time, call munmap(...)
        return addr;
    }
     
    //==========SPLIT THE STRING BY NEWLINE (\n) ==========
    vector<string> splitstringtolines(string const& str) {
        vector<string> split_vector;
        split(split_vector, str, is_any_of("\n"));
     
        return split_vector;
    }
     
    //============Get a string starting from pos============
    string getpos(int const& pos, string const& yy) {
        size_t i = pos;
        string str;
        for (; yy[i] != ' ' && i < yy.length(); i++)
            str += yy[i];
        return str;
    }
    //==================read string vector and return graphs vector===================
    std::vector<Graph> creategraphs(std::vector<string> const& fichlines) {
        std::vector<Graph> dataG;
        int compide = 0; // compteur de id edge
        for (string yy : fichlines) {
            switch (yy[0]) {
            case 't': {
                string str2 = getpos(4, yy);
                unsigned gid = atoi(str2.c_str());
                dataG.emplace_back(GraphProperties(gid, gid));
                compide = 0;
            } break;
            case 'v': {
                assert(!dataG.empty()); // assert will terminate the program  if its argument turns out to be false
                // cout<<yy<<endl;
                int vId, vLabel;
                string vvv = getpos(2, yy);
                vId = atoi(vvv.c_str());
                string vvvv = getpos((int)vvv.length() + 3, yy);
                // cout<<vvvv<<endl;
                vLabel = atoi(vvvv.c_str());
                boost::add_vertex(VertexProperties(vId, vLabel), dataG.back());
            }
     
            break;
     
            case 'e': { // cout<<yy<<endl;
                assert(!dataG.empty()); // assert will terminate the program  if its argument turns out to be false
     
                int fromId, toId, eLabel;
                string eee = getpos(2, yy);
                // cout<<eee<<endl;
                fromId = atoi(eee.c_str());
                string eee2 = getpos((int)eee.length() + 3, yy);
                // cout<<eee2<<endl;
                toId = atoi(eee2.c_str());
                int c = (int)eee.length() + (int)eee2.length() + 4;
                //    cout<<c<<endl;
                string eee3 = getpos(c, yy);
                //  cout<<eee3<<endl;
                eLabel = atoi(eee3.c_str());
                boost::add_edge(fromId, toId, EdgeProperties(compide, eLabel), dataG.back());
                compide++;
            } break;
            }
        }
     
        return dataG;
    }
    //============test if the graph connectivity========================================================
    bool graphconnexe(Graph const& g) { 
        return num_edges(g) >= num_vertices(g) - 1; 
    }
    //====================print the graph information========================================================
    void printgraph(Graph const& gr) {
        typedef std::pair<edge_iter, edge_iter> edge_pair;
     
        std::cout << " contains " << num_vertices(gr) << " vertices, and " << num_edges(gr) << " edges " << std::endl;
        if (graphconnexe(gr)) {
     
            // Vertex list
            if (num_vertices(gr) != 0) {
                std::cout << "  Vertex list: " << std::endl;
                for (size_t i = 0; i < num_vertices(gr); ++i) // size_t vertice number in the graph
                {
                    std::cout << "   v[" << i << "]   ID: " << gr[i].id << ", Label: " << gr[i].label << std::endl;
                }
            }
            // Edge list
            if (num_edges(gr) != 0) {
                std::cout << "  Edge list: " << std::endl;
                edge_pair ep;
                for (ep = edges(gr); ep.first != ep.second; ++ep.first) // ep edge number
                {
                    vertex_t from = source(*ep.first, gr);
                    vertex_t to = target(*ep.first, gr);
                    edge_t edg = edge(from, to, gr);
                    std::cout << "   e(" << gr[from].id << "," << gr[to].id << ")   ID: " << gr[edg.first].id
                              << " ,  Label: " << gr[edg.first].label << std::endl;
                }
            }
            std::cout << "\n\n" << std::endl;
        } else {
            cout << "Please check this graph connectivity." << endl;
        }
    }
     
    //=========================================================
    /*bool gUe(Graph &g, edge_iter ep, Graph t) {
     
        vertex_t from = source(*ep, t);
        vertex_t to = target(*ep, t);
     
        Graph::edge_descriptor copied_edge = boost::add_edge(from, to, t[*ep], g).first;
     
        g[source(copied_edge, g)] = t[from];
        g[target(copied_edge, g)] = t[to];
     
        if (graphconnexe(g) && graphconnexe(t)) {
            return vf2_subgraph_iso(g, t, my_callback());
        } else {
            return false;
        }
    }*/
    //=================test if the given vertice exist in the graph=========================
    bool verticeexist(Graph const& g, int const& vId, int const& vlabel) {
        int cpt = 0;
        if (num_edges(g) != 0) {
            for (size_t i = 0; i < num_vertices(g); ++i) // size_t vertice number in the graph
            {
                if ((g[i].id == vId) && (g[i].label == vlabel)) {
                    cpt++;
                }
            }
        }
        return cpt != 0;
    }
    //=============test if the given edge exist in the graph===========================
    bool edgeexist(Graph const& g, int const& fromid, int const& toid, unsigned const& elabel) {
        int bn = 0;
        if (graphconnexe(g)) {
            if (num_edges(g) != 0) {
                edge_pair ep;
                for (ep = edges(g); ep.first != ep.second; ++ep.first) // ep edge number
                {
                    vertex_t from = source(*ep.first, g);
                    vertex_t to = target(*ep.first, g);
                    edge_t edg = edge(from, to, g);
     
                    if ((g[from].id == fromid) && (g[to].id == toid) && (g[edg.first].label == elabel)) {
                        bn++;
                    }
                }
            }
        }
     
        return (bn != 0);
    }
     
    // =============test if thoses vertices are neighbours============================
    bool verticesareneighbours(Graph const& g, int const& a, int const& b) {
        int bn = 0;
        if (graphconnexe(g)) {
     
            if (num_edges(g) != 0) {
                edge_pair ep;
                for (ep = edges(g); ep.first != ep.second; ++ep.first) // ep edge number
                {
                    vertex_t from = source(*ep.first, g);
                    vertex_t to = target(*ep.first, g);
     
                    if (((g[from].id == a) || (g[to].id == a)) && ((g[from].id == b) || (g[to].id == b))) {
                        bn++;
                    }
                }
            }
        }
     
        return (bn != 0);
    }
    //=============test if those edges are neighbours=============================
        template <typename Graph, typename E = typename boost::graph_traits<Graph>::edge_descriptor>
        bool edgesareneighbours(Graph const& g, E e1, E e2) {
     
            std::set<vertex_t> vertex_set { 
                source(e1, g), target(e1, g),
                source(e2, g), target(e2, g),
            };
     
            return graphconnexe(g) && vertex_set.size() < 4;
        }
    //===============if the graph is empty add the edge with vertices===========================
    void emptygraphaddedge(Graph &g, int fromId, int toId, int eLabel) {
        if (num_edges(g) == 0) {
            boost::add_edge(fromId, toId, EdgeProperties(num_edges(g) + 1, eLabel), g);
        }
    }
     
    //==============================M A I N   P R O G R A M =======================================
    int main() {
        clock_t start = std::clock();
        size_t length;    
     
        std::vector<Graph> dataG = creategraphs(splitstringtolines(readfromfile("testgUe.txt", length)));
     
        typedef std::pair<edge_iter, edge_iter> edge_pair;
     
          if (!dataG.empty()) {
     
            cout<<"graphconnexe?"<<graphconnexe(dataG[0])<<endl;
            cout<<"verticeexist?"<<verticeexist(dataG[0],1,4)<<endl;
            cout<<"verticeexist?"<<verticeexist(dataG[0],4,2)<<endl;
            cout<<"verticesareneighbours?"<<verticesareneighbours(dataG[0],1,4)<<endl;
            cout<<"verticesareneighbours?"<<verticesareneighbours(dataG[0],4,2)<<endl;
            cout<<"edgeexist?"<<edgeexist(dataG[0],1,4,16)<<endl;
            cout<<"edgeexist?"<<edgeexist(dataG[0],1,4,12)<<endl;
     
            edge_pair ep = edges(dataG[0]);
     
            if (size(ep) >= 2) {
                 Graph::edge_descriptor e1 = *ep.first++;
                 Graph::edge_descriptor e2 = *ep.first++;                                                    
                 cout << "edgesareneighbours?" << edgesareneighbours(dataG[0], e1, e2) << endl;
     
            }
        }
     
        // end and time
        cout << "FILE Contains " << dataG.size() << " graphs.\nTIME: " << (std::clock() - start) / (double)CLOCKS_PER_SEC
             << "s" << endl; // fin du programme.
    }
    Quelqu'un m'a dit de diviser le programme en plusieurs fichiers ou chaque fichier contient une seule méthode, ci joint le travail que j'ai fais.
    NouvelleApprocheBOOST_MEMORY.zip
    mais lorsque j'essai de le compilé j'ai un erreur du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In file included from methodlire_v14.cpp:18:0:
    ./HEADERS/CREATEGRAPHS.h:13:21: fatal error: STRUCTS.h: Aucun fichier ou dossier de ce type
     #include <STRUCTS.h>
                         ^
    sachant que j'ai vérifié que le fichier STRUCTS.h existe et ce trouve dans la même racine

  2. #2
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2013
    Messages : 11
    Points : 19
    Points
    19
    Par défaut
    Le problème, c'est que tout les autres fichiers :
    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
    #include <boost/graph/adjacency_list.hpp>
    #include <boost/graph/vf2_sub_graph_iso.hpp>
    #include <boost/algorithm/string/split.hpp>
    #include <boost/algorithm/string/classification.hpp>
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <ctime>
    #include <queue> // std::queue
    // for mmap:
    #include <sys/mman.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    sont des fichiers système, c'est à dire qui sont dans un endroit spécifique de ton système d'exploitation.
    En revanche, le fichier STRUCT.h, lui se trouve dans l'arbolesence de ton programme actual, donc il faut transformer les <> en "",
    ce qui devient :

  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
    Effectivement, #include "STRUCTS.h" est la solution.
    maintenant il me dit que 'Graph' n'est pas déclaré dans CREATEGRAPHS.h sachant que CREATEGRAPHS.h contient #include "STRUCTS.h" et dans STRUCTS.h j'ai déclaré toutes les structures y compris 'Graph' !

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Problème d'inclusions mutuelles?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    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
    Voila la dernière mise a jour du programme: https://github.com/mohsenuss91/Acade...heBOOST_MEMORY
    maintenant j'ai 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
    /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|842|required from ‘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>&) [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::choose_difference_type, Derived1, Derived2>::type>::type = int]’|
    /usr/include/boost/range/size.hpp|32|required from ‘typename boost::range_size<const T>::type boost::range_detail::range_calculate_size(const SinglePassRange&) [with SinglePassRange = std::pair<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>, 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 boost::range_size<const T>::type = unsigned int]’|
    /usr/include/boost/range/size.hpp|47|required from ‘typename boost::range_size<const T>::type boost::size(const SinglePassRange&) [with SinglePassRange = std::pair<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>, 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 boost::range_size<const T>::type = unsigned int]’|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST_MEMORY/main.cpp|55|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|842|required from ‘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>&) [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::choose_difference_type, Derived1, Derived2>::type>::type = int]’|
    /usr/include/boost/range/size.hpp|32|required from ‘typename boost::range_size<const T>::type boost::range_detail::range_calculate_size(const SinglePassRange&) [with SinglePassRange = std::pair<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>, 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 boost::range_size<const T>::type = unsigned int]’|
    /usr/include/boost/range/size.hpp|47|required from ‘typename boost::range_size<const T>::type boost::size(const SinglePassRange&) [with SinglePassRange = std::pair<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>, 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 boost::range_size<const T>::type = unsigned int]’|
    /home/mohsenuss91/Bureau/NouvelleApprocheBOOST_MEMORY/main.cpp|55|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), 13 warning(s) (0 minute(s), 5 second(s)) ===|

Discussions similaires

  1. Find and replace sur plusieur fichiers
    Par dazhoid dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/08/2006, 16h18
  2. Macros sur Plusieurs fichiers Excel
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2006, 11h21
  3. Sed sur plusieurs fichiers
    Par gangsoleil dans le forum Linux
    Réponses: 4
    Dernier message: 21/02/2006, 11h55
  4. #define sur plusieurs fichiers
    Par [thebadskull] dans le forum C
    Réponses: 5
    Dernier message: 14/10/2005, 20h52
  5. Réponses: 4
    Dernier message: 03/12/2004, 11h18

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