From fd5fbda4dd3caa40cf0ebe8d7c33c73c7994c54a Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Thu, 31 Jul 2014 16:59:47 +0200 Subject: [PATCH] Use emplace() for associative containers. * HACKING: Adjust requirements. g++4.8 is now OK for all our targets. * iface/dve2/dve2.cc, src/dstarparse/dstarparse.yy src/dstarparse/nsa2tgba.cc, src/graph/ngraph.hh, src/ltlast/atomic_prop.cc, src/ltlast/binop.cc, src/ltlast/bunop.cc, src/ltlast/multop.cc, src/ltlast/unop.cc, src/ltlvisit/mark.cc, src/ltlvisit/relabel.cc, src/taalgos/emptinessta.cc, src/taalgos/tgba2ta.cc, src/tgba/tgbaexplicit.hh, src/tgba/tgbagraph.hh, src/tgba/tgbasafracomplement.cc, src/tgba/tgbatba.cc, src/tgbaalgos/cycles.cc, src/tgbaalgos/degen.cc, src/tgbaalgos/dtbasat.cc, src/tgbaalgos/dtgbasat.cc, src/tgbaalgos/emptiness.cc, src/tgbaalgos/gtec/gtec.cc, src/tgbaalgos/ltl2tgba_fm.cc, src/tgbaalgos/magic.cc, src/tgbaalgos/ndfs_result.hxx, src/tgbaalgos/reachiter.cc, src/tgbaalgos/scc.cc, src/tgbaalgos/sccfilter.cc, src/tgbaalgos/se05.cc, src/tgbaalgos/simulation.cc, src/tgbaalgos/tau03.cc, src/tgbaalgos/tau03opt.cc, src/tgbaalgos/weight.cc: Use emplace() instead of insert(make_pair(...)) or insert(...::value_type(...)). --- HACKING | 23 +++++------------------ iface/dve2/dve2.cc | 4 +--- src/dstarparse/dstarparse.yy | 2 +- src/dstarparse/nsa2tgba.cc | 6 ++---- src/graph/ngraph.hh | 4 ++-- src/ltlast/atomic_prop.cc | 2 +- src/ltlast/binop.cc | 3 +-- src/ltlast/bunop.cc | 3 +-- src/ltlast/multop.cc | 2 +- src/ltlast/unop.cc | 2 +- src/ltlvisit/mark.cc | 3 +-- src/ltlvisit/relabel.cc | 17 +++++++++-------- src/taalgos/emptinessta.cc | 6 +++--- src/taalgos/tgba2ta.cc | 2 +- src/tgba/tgbaexplicit.hh | 5 ++--- src/tgba/tgbagraph.hh | 2 +- src/tgba/tgbasafracomplement.cc | 10 +++++----- src/tgba/tgbatba.cc | 4 ++-- src/tgbaalgos/cycles.cc | 3 +-- src/tgbaalgos/degen.cc | 9 +++------ src/tgbaalgos/dtbasat.cc | 4 ++-- src/tgbaalgos/dtgbasat.cc | 12 ++++-------- src/tgbaalgos/emptiness.cc | 4 ++-- src/tgbaalgos/gtec/gtec.cc | 2 +- src/tgbaalgos/ltl2tgba_fm.cc | 4 ++-- src/tgbaalgos/magic.cc | 2 +- src/tgbaalgos/ndfs_result.hxx | 6 +++--- src/tgbaalgos/reachiter.cc | 3 +-- src/tgbaalgos/scc.cc | 8 ++++---- src/tgbaalgos/sccfilter.cc | 4 ++-- src/tgbaalgos/se05.cc | 4 ++-- src/tgbaalgos/simulation.cc | 6 +++--- src/tgbaalgos/tau03.cc | 2 +- src/tgbaalgos/tau03opt.cc | 6 ++++-- src/tgbaalgos/weight.cc | 2 +- 35 files changed, 77 insertions(+), 104 deletions(-) diff --git a/HACKING b/HACKING index 6d44d9f56..968ef128a 100644 --- a/HACKING +++ b/HACKING @@ -229,25 +229,12 @@ C++11 ----- Spot uses some C++11 features, and therefore requires a C++11 - compiler. However (1) fully C++11-compliant compilers are - not yet well deployed, and (2) development tools have yet - to be updated to provide suitable C++11 support. For instance - Swig 2.0, which we use for the Python bindings, does not - understand C++11. The upcoming release of Swig 3 has better - support for C++11, we should switch to it as soon as possible. + compiler. The code relies on features that are not available in + version of g++ older than 4.8, so this is our minimum requirement + for now. Avoid features that require 4.9. - In the meantime, try to keep the C++11-specific syntax in the *.cc - files as much as possible. - - Use only C++11 features that are available in clang 3.1 and g++ 4.6: - - http://gcc.gnu.org/projects/cxx0x.html - - http://clang.llvm.org/cxx_status.html - - Library interfaces that should not be used: - - emplace() is not implemented for associative containers - (std::map, std::set, and their unordered ffriends) is - before g++ 4.8. Use - x.insert(std::make_pair(...)) instead of x.emplace(...) + Reasonably recent versions of clang should work as well. Our + build farm has clang++ 3.5. Encoding -------- diff --git a/iface/dve2/dve2.cc b/iface/dve2/dve2.cc index 6cc9f46ad..6237236f9 100644 --- a/iface/dve2/dve2.cc +++ b/iface/dve2/dve2.cc @@ -353,9 +353,7 @@ namespace spot { int enum_count = d->get_state_variable_type_value_count(i); for (int j = 0; j < enum_count; ++j) - enum_map[i] - .insert(std::make_pair(d->get_state_variable_type_value(i, j), - j)); + enum_map[i].emplace(d->get_state_variable_type_value(i, j), j); } for (ltl::atomic_prop_set::const_iterator ap = aps->begin(); diff --git a/src/dstarparse/dstarparse.yy b/src/dstarparse/dstarparse.yy index 4f4446c69..c0285d0cb 100644 --- a/src/dstarparse/dstarparse.yy +++ b/src/dstarparse/dstarparse.yy @@ -259,7 +259,7 @@ transitions: | transitions NUMBER opt_eols { std::pair i = - result.dest_map.insert(std::make_pair($2, *result.cur_guard)); + result.dest_map.emplace($2, *result.cur_guard); if (!i.second) i.first->second |= *result.cur_guard; ++result.cur_guard; diff --git a/src/dstarparse/nsa2tgba.cc b/src/dstarparse/nsa2tgba.cc index cffb39e5f..003a781e2 100644 --- a/src/dstarparse/nsa2tgba.cc +++ b/src/dstarparse/nsa2tgba.cc @@ -175,8 +175,7 @@ namespace spot build_state d(dlabel, pend); // Have we already seen this destination? int dest; - std::pair dres = - bs2num.insert(bs2num_map::value_type(d, 0)); + auto dres = bs2num.emplace(d, 0); if (!dres.second) { dest = dres.first->second; @@ -199,8 +198,7 @@ namespace spot build_state d(label(a, i->current_state()), pend); // Have we already seen this destination? int dest; - std::pair dres = - bs2num.insert(bs2num_map::value_type(d, 0)); + auto dres = bs2num.emplace(d, 0); if (!dres.second) { dest = dres.first->second; diff --git a/src/graph/ngraph.hh b/src/graph/ngraph.hh index 3027b77c1..5d1b66b9e 100644 --- a/src/graph/ngraph.hh +++ b/src/graph/ngraph.hh @@ -64,7 +64,7 @@ namespace spot template state new_state(name n, Args&&... args) { - auto p = name_to_state.insert(std::make_pair(n, 0U)); + auto p = name_to_state.emplace(n, 0U); if (p.second) { unsigned s = g_.new_state(std::forward(args)...); @@ -81,7 +81,7 @@ namespace spot /// \return true iff the newname was already used. bool alias_state(state s, name newname) { - return !name_to_state.insert(std::make_pair(newname, s)).second; + return !name_to_state.emplace(newname, s).second; } state get_state(name n) const diff --git a/src/ltlast/atomic_prop.cc b/src/ltlast/atomic_prop.cc index 8a7351697..c801591cf 100644 --- a/src/ltlast/atomic_prop.cc +++ b/src/ltlast/atomic_prop.cc @@ -91,7 +91,7 @@ namespace spot atomic_prop::instance(const std::string& name, environment& env) { const atomic_prop* ap; - auto ires = instances.insert(std::make_pair(key(name, &env), nullptr)); + auto ires = instances.emplace(key(name, &env), nullptr); if (!ires.second) ap = ires.first->second; else diff --git a/src/ltlast/binop.cc b/src/ltlast/binop.cc index 22da058ce..40f2003ec 100644 --- a/src/ltlast/binop.cc +++ b/src/ltlast/binop.cc @@ -504,8 +504,7 @@ namespace spot } const binop* res; - auto ires = instances.insert(std::make_pair(key(op, first, second), - nullptr)); + auto ires = instances.emplace(key(op, first, second), nullptr); if (!ires.second) { // This instance already exists. diff --git a/src/ltlast/bunop.cc b/src/ltlast/bunop.cc index 627d4c1de..399f1e02e 100644 --- a/src/ltlast/bunop.cc +++ b/src/ltlast/bunop.cc @@ -237,8 +237,7 @@ namespace spot } const formula* res; - auto ires = instances.insert(std::make_pair(key(op, child, min, max), - nullptr)); + auto ires = instances.emplace(key(op, child, min, max), nullptr); if (!ires.second) { // This instance already exists. diff --git a/src/ltlast/multop.cc b/src/ltlast/multop.cc index 60a1f2aa1..0f203895d 100644 --- a/src/ltlast/multop.cc +++ b/src/ltlast/multop.cc @@ -595,7 +595,7 @@ namespace spot const multop* res; // Insert the key with the dummy nullptr just // to check if p already exists. - auto ires = instances.insert(std::make_pair(key(op, v), nullptr)); + auto ires = instances.emplace(key(op, v), nullptr); if (!ires.second) { // The instance did already exists. Free v. diff --git a/src/ltlast/unop.cc b/src/ltlast/unop.cc index 24632a7ac..0e9e21d1b 100644 --- a/src/ltlast/unop.cc +++ b/src/ltlast/unop.cc @@ -300,7 +300,7 @@ namespace spot } const unop* res; - auto ires = instances.insert(std::make_pair(key(op, child), nullptr)); + auto ires = instances.emplace(key(op, child), nullptr); if (!ires.second) { // This instance already exists. diff --git a/src/ltlvisit/mark.cc b/src/ltlvisit/mark.cc index a4b7384f7..a3d60648a 100644 --- a/src/ltlvisit/mark.cc +++ b/src/ltlvisit/mark.cc @@ -114,8 +114,7 @@ namespace spot switch (bo->op()) { case binop::EConcatMarked: - empairs.insert(std::make_pair(bo->first(), - bo->second())); + empairs.emplace(bo->first(), bo->second()); // fall through case binop::Xor: case binop::Implies: diff --git a/src/ltlvisit/relabel.cc b/src/ltlvisit/relabel.cc index c239c9e3e..5f7927cb8 100644 --- a/src/ltlvisit/relabel.cc +++ b/src/ltlvisit/relabel.cc @@ -110,8 +110,7 @@ namespace spot const formula* rename(const formula* old) { - std::pair r = - newname.insert(map::value_type(old, 0)); + auto r = newname.emplace(old, nullptr); if (!r.second) { return r.first->second->clone(); @@ -327,9 +326,7 @@ namespace spot void recurse(const formula* f) { - std::pair i = - g.insert(fgraph::value_type(f, succ_vec())); - + auto i = g.emplace(f, succ_vec()); if (!s.empty()) { const formula* top = s.top(); @@ -356,6 +353,10 @@ namespace spot { unsigned num; // serial number, in pre-order unsigned low; // lowest number accessible via unstacked descendants + data_entry(unsigned num = 0, unsigned low = 0) + : num(num), low(low) + { + } }; typedef std::unordered_map fmap_t; @@ -410,9 +411,9 @@ namespace spot // std::cerr << " grand parent is " // << to_string(e.grand_parent) // << "\n child is " << to_string(child) << '\n'; - data_entry d = { num, num }; - std::pair i = - data.insert(fmap_t::value_type(child, d)); + auto i = data.emplace(std::piecewise_construct, + std::forward_as_tuple(child), + std::forward_as_tuple(num, num)); if (i.second) // New destination. { ++num; diff --git a/src/taalgos/emptinessta.cc b/src/taalgos/emptinessta.cc index b86f519da..7820c749c 100644 --- a/src/taalgos/emptinessta.cc +++ b/src/taalgos/emptinessta.cc @@ -106,7 +106,7 @@ namespace spot state_ta_product* init = new state_ta_product( (ta_init_it_->current_state()), kripke_init_state->clone()); - if (!h.insert(std::make_pair(init, num + 1)).second) + if (!h.emplace(init, num + 1).second) { init->destroy(); continue; @@ -216,7 +216,7 @@ namespace spot // We do not need SUCC from now on. // Are we going to a new state? - auto p = h.insert(std::make_pair(dest, num + 1)); + auto p = h.emplace(dest, num + 1); if (p.second) { // Number it, stack it, and register its successors @@ -427,7 +427,7 @@ namespace spot state* init = ta_init_it_.front(); ta_init_it_.pop(); - if (!h.insert(std::make_pair(init, num + 1)).second) + if (!h.emplace(init, num + 1).second) { init->destroy(); continue; diff --git a/src/taalgos/tgba2ta.cc b/src/taalgos/tgba2ta.cc index 4f9fe8964..0cc1fdaef 100644 --- a/src/taalgos/tgba2ta.cc +++ b/src/taalgos/tgba2ta.cc @@ -193,7 +193,7 @@ namespace spot down_cast (init_set.top()); init_set.pop(); - if (!h.insert(std::make_pair(init, num + 1)).second) + if (!h.emplace(init, num + 1).second) { init->destroy(); continue; diff --git a/src/tgba/tgbaexplicit.hh b/src/tgba/tgbaexplicit.hh index d5ed9fb0e..be7989a11 100644 --- a/src/tgba/tgbaexplicit.hh +++ b/src/tgba/tgbaexplicit.hh @@ -431,7 +431,7 @@ namespace spot last_dest = dest; dmi = dm.find(dest); if (dmi == dm.end()) - dmi = dm.insert(std::make_pair(dest, acc_map())).first; + dmi = dm.emplace(dest, acc_map()).first; } int acc = t1->acceptance_conditions.id(); typename acc_map::iterator it = dmi->second.find(acc); @@ -460,8 +460,7 @@ namespace spot if (j != alias_.end()) return j->second; - State* res = - &(ls_.insert(std::make_pair(name, State(name))).first->second); + State* res = &(ls_.emplace(name, State(name)).first->second); sl_[res] = name; // The first state we add is the initial state. // It can also be overridden with set_init_state(). diff --git a/src/tgba/tgbagraph.hh b/src/tgba/tgbagraph.hh index cac98a9c1..768330796 100644 --- a/src/tgba/tgbagraph.hh +++ b/src/tgba/tgbagraph.hh @@ -386,7 +386,7 @@ namespace spot } key_t k(t->dst, t->acc.id()); - auto p = trmap.insert(make_pair(k, t.trans())); + auto p = trmap.emplace(k, t.trans()); if (!p.second) { // A previous transitions exist for k, merge the diff --git a/src/tgba/tgbasafracomplement.cc b/src/tgba/tgbasafracomplement.cc index dc637c108..ab0fd1edd 100644 --- a/src/tgba/tgbasafracomplement.cc +++ b/src/tgba/tgbasafracomplement.cc @@ -1184,8 +1184,8 @@ namespace spot p.second, false); state_complement* s2 = new state_complement(e->clone(), e->clone(), p.second, true); - succ_list.insert(std::make_pair(p.first, s1)); - succ_list.insert(std::make_pair(p.first, s2)); + succ_list.emplace(p.first, s1); + succ_list.emplace(p.first, s2); } } else @@ -1210,7 +1210,7 @@ namespace spot { st = new state_complement(e->clone(), e->clone(), p.second, true); - succ_list.insert(std::make_pair(p.first, st)); + succ_list.emplace(p.first, st); } condition = the_acceptance_cond_; } @@ -1219,7 +1219,7 @@ namespace spot for (auto& p: tr->second) { st = new state_complement(newI, newJ, p.second, true); - succ_list.insert(std::make_pair(p.first, st)); + succ_list.emplace(p.first, st); } } delete newI; @@ -1234,7 +1234,7 @@ namespace spot { st = new state_complement(pending->clone(), e->clone(), p.second, true); - succ_list.insert(std::make_pair(p.first, st)); + succ_list.emplace(p.first, st); } delete pending; diff --git a/src/tgba/tgbatba.cc b/src/tgba/tgbatba.cc index 69685b598..6c019613b 100644 --- a/src/tgba/tgbatba.cc +++ b/src/tgba/tgbatba.cc @@ -315,8 +315,8 @@ namespace spot transmap_t::iterator id = transmap_.find(key); if (id == transmap_.end()) // No { - mapit_t pos = transmap_ - .insert(std::make_pair(key, it->current_condition())).first; + mapit_t pos = + transmap_.emplace(key, it->current_condition()).first; // Keep the order of the transitions in the // degeneralized automaton related to the order of the // transitions in the input automaton: in the past we diff --git a/src/tgbaalgos/cycles.cc b/src/tgbaalgos/cycles.cc index 974a9a724..c9e692d9a 100644 --- a/src/tgbaalgos/cycles.cc +++ b/src/tgbaalgos/cycles.cc @@ -66,8 +66,7 @@ namespace spot enumerate_cycles::tagged_state enumerate_cycles::tag_state(const state* s) { - std::pair p = - tags_.insert(std::make_pair(s, state_info())); + auto p = tags_.emplace(s, state_info()); if (!p.second) s->destroy(); return p.first; diff --git a/src/tgbaalgos/degen.cc b/src/tgbaalgos/degen.cc index 27ca17c3f..deb928cd6 100644 --- a/src/tgbaalgos/degen.cc +++ b/src/tgbaalgos/degen.cc @@ -103,7 +103,7 @@ namespace spot union_ |= set; } cache_entry e(common, union_); - return cache_.insert(std::make_pair(s, e)).first; + return cache_.emplace(s, e).first; } // Intersection of all outgoing acceptance sets @@ -144,8 +144,7 @@ namespace spot bool check(const state* s) { - std::pair p = - cache_.insert(std::make_pair(s, false)); + auto p = cache_.emplace(s, false); if (p.second) { bdd all = a_->all_acceptance_conditions(); @@ -569,9 +568,7 @@ namespace spot if (use_lvl_cache) { - std::pair res = - lvl_cache.insert(lvl_cache_t::value_type(d.first, - d.second)); + auto res = lvl_cache.emplace(d.first, d.second); if (!res.second) { diff --git a/src/tgbaalgos/dtbasat.cc b/src/tgbaalgos/dtbasat.cc index b0d1c1954..230aa2eb6 100644 --- a/src/tgbaalgos/dtbasat.cc +++ b/src/tgbaalgos/dtbasat.cc @@ -312,10 +312,10 @@ namespace spot transition t(i, one, j); d.transid[t] = ++d.nvars; - d.revtransid.insert(dict::rev_map::value_type(d.nvars, t)); + d.revtransid.emplace(d.nvars, t); int ta = d.transacc[t] = state_based_ ? transacc : ++d.nvars; - d.revtransacc.insert(dict::rev_map::value_type(ta, t)); + d.revtransacc.emplace(ta, t); } } } diff --git a/src/tgbaalgos/dtgbasat.cc b/src/tgbaalgos/dtgbasat.cc index cd9d87e20..a13b305a7 100644 --- a/src/tgbaalgos/dtgbasat.cc +++ b/src/tgbaalgos/dtgbasat.cc @@ -411,8 +411,7 @@ namespace spot transition t(i, one, j); d.transid[t] = ++d.nvars; - d.revtransid.insert(dict::rev_map:: - value_type(d.nvars, t)); + d.revtransid.emplace(d.nvars, t); // Create the variable for the accepting transition // immediately afterwards. It helps parsing the @@ -421,8 +420,7 @@ namespace spot { transition_acc ta(i, one, d.cand_acc[n], j); d.transaccid[ta] = ++d.nvars; - d.revtransaccid.insert(dict::rev_acc_map:: - value_type(d.nvars, ta)); + d.revtransaccid.emplace(d.nvars, ta); } } } @@ -443,8 +441,7 @@ namespace spot transition_acc ta(i, one, d.cand_acc[n], j); d.transaccid[ta] = d.nvars; - d.revtransaccid.insert(dict::rev_acc_map:: - value_type(d.nvars, ta)); + d.revtransaccid.emplace(d.nvars, ta); } } } @@ -459,8 +456,7 @@ namespace spot transition t(i, one, j); d.transid[t] = ++d.nvars; - d.revtransid.insert(dict::rev_map:: - value_type(d.nvars, t)); + d.revtransid.emplace(d.nvars, t); } } } diff --git a/src/tgbaalgos/emptiness.cc b/src/tgbaalgos/emptiness.cc index d55caf55e..cde8e9533 100644 --- a/src/tgbaalgos/emptiness.cc +++ b/src/tgbaalgos/emptiness.cc @@ -308,7 +308,7 @@ namespace spot assert(s->compare(i->s) == 0); src = res->new_state(); - seen.insert(std::make_pair(i->s, src)); + seen.emplace(i->s, src); for (; i != l->end();) { @@ -355,7 +355,7 @@ namespace spot s = the_next; - auto p = seen.insert(std::make_pair(next, 0)); + auto p = seen.emplace(next, 0); if (p.second) p.first->second = res->new_state(); dst = p.first->second; diff --git a/src/tgbaalgos/gtec/gtec.cc b/src/tgbaalgos/gtec/gtec.cc index caf2f17fa..acf631fa9 100644 --- a/src/tgbaalgos/gtec/gtec.cc +++ b/src/tgbaalgos/gtec/gtec.cc @@ -215,7 +215,7 @@ namespace spot // We do not need SUCC from now on. // Are we going to a new state? - auto p = ecs_->h.insert(std::make_pair(dest, num + 1)); + auto p = ecs_->h.emplace(dest, num + 1); if (p.second) { // Yes. Bump number, stack the stack, and register its diff --git a/src/tgbaalgos/ltl2tgba_fm.cc b/src/tgbaalgos/ltl2tgba_fm.cc index e0580458a..d30463b5a 100644 --- a/src/tgbaalgos/ltl2tgba_fm.cc +++ b/src/tgbaalgos/ltl2tgba_fm.cc @@ -1749,7 +1749,7 @@ namespace spot } f->clone(); - return ltl_bdd_.insert(std::make_pair(ff, t)).first->second; + return ltl_bdd_.emplace(ff, t).first->second; } @@ -1974,7 +1974,7 @@ namespace spot if (b2f_.find(t.symbolic) == b2f_.end()) b2f_[t.symbolic] = f; - return f2b_.insert(std::make_pair(f->clone(), t)).first->second; + return f2b_.emplace(f->clone(), t).first->second; } const formula* diff --git a/src/tgbaalgos/magic.cc b/src/tgbaalgos/magic.cc index 104793399..11a4003e1 100644 --- a/src/tgbaalgos/magic.cc +++ b/src/tgbaalgos/magic.cc @@ -484,7 +484,7 @@ namespace spot void add_new_state(const state* s, color c) { assert(h.find(s) == h.end()); - h.insert(std::make_pair(s, c)); + h.emplace(s, c); } void pop_notify(const state*) const diff --git a/src/tgbaalgos/ndfs_result.hxx b/src/tgbaalgos/ndfs_result.hxx index c91c4ae65..6097d3364 100644 --- a/src/tgbaalgos/ndfs_result.hxx +++ b/src/tgbaalgos/ndfs_result.hxx @@ -557,7 +557,7 @@ namespace spot { ndfsr_trace << a_->format_state(i->source) << " (-> " << a_->format_state(i->dest) << ") "; - target.insert(std::make_pair(i->source, *i)); + target.emplace(i->source, *i); } } ndfsr_trace << std::endl; @@ -605,7 +605,7 @@ namespace spot << a_->format_state(begin) << std::endl; transition tmp; tmp.source = tmp.dest = 0; // Initialize to please GCC 4.0.1 (Darwin). - target.insert(std::make_pair(begin, tmp)); + target.emplace(begin, tmp); min_path s(this, a_, target, h_); const state* res = s.search(current.dest->clone(), run->cycle); assert(res); @@ -623,7 +623,7 @@ namespace spot // Register all states from the cycle as target of the BFS. for (tgba_run::steps::const_iterator i = run->cycle.begin(); i != run->cycle.end(); ++i) - target.insert(std::make_pair(i->s, tmp)); + target.emplace(i->s, tmp); const state* prefix_start = a_->get_init_state(); // There are two cases: either the initial state is already on diff --git a/src/tgbaalgos/reachiter.cc b/src/tgbaalgos/reachiter.cc index d115c50c7..7bfc74c56 100644 --- a/src/tgbaalgos/reachiter.cc +++ b/src/tgbaalgos/reachiter.cc @@ -203,8 +203,7 @@ namespace spot } dst = si->current_state(); - std::pair res = - seen.insert(std::make_pair(dst, n)); + auto res = seen.emplace(dst, n); if (!res.second) { // The state has already been seen. diff --git a/src/tgbaalgos/scc.cc b/src/tgbaalgos/scc.cc index ef9f259b7..c9e915e01 100644 --- a/src/tgbaalgos/scc.cc +++ b/src/tgbaalgos/scc.cc @@ -146,7 +146,7 @@ namespace spot self_loops_ = 0; state* init = aut_->get_init_state(); num_ = -1; - h_.insert(std::make_pair(init, num_)); + h_.emplace(init, num_); root_.emplace_front(num_); arc_acc_.push(bddfalse); arc_cond_.push(bddfalse); @@ -196,7 +196,7 @@ namespace spot // Record the transition between the SCC being popped // and the previous SCC. if (!root_.empty()) - root_.front().succ.insert(std::make_pair(num, cond)); + root_.front().succ.emplace(num, cond); } aut_->release_iter(succ); @@ -223,7 +223,7 @@ namespace spot { // Yes. Number it, stack it, and register its successors // for later processing. - h_.insert(std::make_pair(dest, --num_)); + h_.emplace(dest, --num_); root_.emplace_front(num_); arc_acc_.push(acc); arc_cond_.push(cond); @@ -244,7 +244,7 @@ namespace spot // dest SCC labelled with cond. succ_type::iterator i = root_.front().succ.find(dest); if (i == root_.front().succ.end()) - root_.front().succ.insert(std::make_pair(dest, cond)); + root_.front().succ.emplace(dest, cond); else i->second |= cond; diff --git a/src/tgbaalgos/sccfilter.cc b/src/tgbaalgos/sccfilter.cc index 7d315987a..8c578ea4b 100644 --- a/src/tgbaalgos/sccfilter.cc +++ b/src/tgbaalgos/sccfilter.cc @@ -466,7 +466,7 @@ namespace spot // turn makes sure we preserve the acceptance condition // ordering (which matters for degeneralization). for (BDD c = useful.id(); c != 1; c = bdd_low(c)) - remap_table[n].insert(std::make_pair(bdd_var(c), --num)); + remap_table[n].emplace(bdd_var(c), --num); max_table[n] = max_num; } @@ -854,7 +854,7 @@ namespace spot // turn makes sure we preserve the acceptance condition // ordering (which matters for degeneralization). for (BDD c = useful.id(); c != 1; c = bdd_low(c)) - remap_table[n].insert(std::make_pair(bdd_var(c), --num)); + remap_table[n].emplace(bdd_var(c), --num); max_table[n] = max_num; } diff --git a/src/tgbaalgos/se05.cc b/src/tgbaalgos/se05.cc index d6d12014c..0238fdf55 100644 --- a/src/tgbaalgos/se05.cc +++ b/src/tgbaalgos/se05.cc @@ -470,7 +470,7 @@ namespace spot int i = phc->erase(ps); assert(i == 1); (void)i; - ph->insert(std::make_pair(ps, c)); + ph->emplace(ps, c); } else { @@ -540,7 +540,7 @@ namespace spot if (c == CYAN) hc.insert(s); else - h.insert(std::make_pair(s, c)); + h.emplace(s, c); } void pop_notify(const state*) const diff --git a/src/tgbaalgos/simulation.cc b/src/tgbaalgos/simulation.cc index ae5ff4733..3f1d775bf 100644 --- a/src/tgbaalgos/simulation.cc +++ b/src/tgbaalgos/simulation.cc @@ -141,9 +141,9 @@ namespace spot map_constraint& feed_me) { for (auto& p: list) - feed_me.insert(std::make_pair(std::make_pair(std::get<0>(p), - std::get<1>(p)), - std::get<2>(p))); + feed_me.emplace(std::make_pair(std::get<0>(p), + std::get<1>(p)), + std::get<2>(p)); } diff --git a/src/tgbaalgos/tau03.cc b/src/tgbaalgos/tau03.cc index c6ac431c7..4ea97040a 100644 --- a/src/tgbaalgos/tau03.cc +++ b/src/tgbaalgos/tau03.cc @@ -347,7 +347,7 @@ namespace spot void add_new_state(const state* s, color c) { assert(h.find(s) == h.end()); - h.insert(std::make_pair(s, std::make_pair(c, bddfalse))); + h.emplace(s, std::make_pair(c, bddfalse)); } void pop_notify(const state*) const diff --git a/src/tgbaalgos/tau03opt.cc b/src/tgbaalgos/tau03opt.cc index f4ab2d751..33d5de731 100644 --- a/src/tgbaalgos/tau03opt.cc +++ b/src/tgbaalgos/tau03opt.cc @@ -445,7 +445,7 @@ namespace spot { assert(c != CYAN); std::pair p; - p = ph->insert(std::make_pair(ps, std::make_pair(c, *acc))); + p = ph->emplace(ps, std::make_pair(c, *acc)); assert(p.second); acc = &(p.first->second.second); int i = phc->erase(ps); @@ -536,7 +536,9 @@ namespace spot assert(hc.find(s) == hc.end() && h.find(s) == h.end()); assert(c == CYAN); (void)c; - hc.insert(std::make_pair(s, std::make_pair(w, bddfalse))); + hc.emplace(std::piecewise_construct, + std::forward_as_tuple(s), + std::forward_as_tuple(w, bddfalse)); } void pop_notify(const state*) const diff --git a/src/tgbaalgos/weight.cc b/src/tgbaalgos/weight.cc index 87fd3ced1..72b66c499 100644 --- a/src/tgbaalgos/weight.cc +++ b/src/tgbaalgos/weight.cc @@ -39,7 +39,7 @@ namespace spot { weight::weight_vector::iterator it = pm->find(v); if (it == pm->end()) - pm->insert(std::make_pair(v, 1)); + pm->emplace(v, 1); else ++(it->second); break;