c++ - STL Map with structure -
i have structure:
struct tuple{int node; float cost}; std::map<int,std::set<tuple>> graph; i'd know how change comparison operator map container not insert key repeated value example:
ex.:
insert(1, {2,3}) insert(1, {2,4}) // not allowed insert(1, {4,3}) // allowed the containers used implement graph whenever node in node adjacency, can no longer inserted in adjacency. thanks.
you can't this. key of map int, there no way make @ tuple well.
maybe replace map std::set<std::pair<int, std::set<tuple>>, cmp> cmp is
struct cmp { using value_type = std::pair<int, std::set<tuple>>; bool operator()(const value_type& l, const value_type& r) const { if (l.first < r.first) return true; if (l.first > r.first) return false; return l.second < r.second; } }; this works because std::set can examine part of value_type determine ordering of elements, whereas std::map can examine key_type
you need check definition of comparison though, it's not clear how expect use std::set<tuple> when tuple not lessthancomparable, , it's not clear expect insert(1, {3,4}) do, when {3,4} not valid initializer set<tuple>.
Comments
Post a Comment