diff --git a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx index f0faa2fee529f5f82d28014a2409a6934bce03b2..fe71cc91bb231c9e7283f5d6a563f52cbdbd7d96 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeIDPDAPart.cxx @@ -27,36 +27,36 @@ automaton::InputDrivenDPDA Determinize::determinize(const automaton::InputDriven // 2 std::deque<automaton::State> todo; - todo.push_back(initialState); + todo.push_back(std::move(initialState)); do { // 3a, c - automaton::State state = todo.front(); + automaton::State state = std::move(todo.front()); todo.pop_front(); // 3b - for (const auto& input : nfa.getInputAlphabet()) { + for (const alphabet::Symbol& input : nfa.getInputAlphabet()) { std::set<automaton::State> targetIDPDAStates; - for(const auto& nfaState : recreateNFAStates(state)) { - auto iter = nfa.getTransitions().find(std::make_pair(nfaState, input)); + for(automaton::State nfaState : std::make_moveable_set(recreateNFAStates(state))) { + auto iter = nfa.getTransitions().find(std::make_pair(std::move(nfaState), input)); if(iter != nfa.getTransitions().end()) { targetIDPDAStates.insert(iter->second.begin(), iter->second.end()); } } - automaton::State dfaState = createDFAState(targetIDPDAStates); + automaton::State dfaState = createDFAState(std::move(targetIDPDAStates)); // 4 bool existed = !res.addState(dfaState); - // 3b - res.addTransition(state, input, dfaState); - if(!existed) todo.push_back(dfaState); + + // 3b + res.addTransition(std::move(state), input, std::move(dfaState)); } } while(!todo.empty()); // 5 - for (const auto& dfaState : res.getStates()) { + for (const automaton::State & dfaState : res.getStates()) { std::set<automaton::State> nfaStates = recreateNFAStates(dfaState); if(std::any_of(nfaStates.begin(), nfaStates.end(), [&](const automaton::State& nfaState) { return nfa.getFinalStates().count(nfaState); })) { res.addFinalState(dfaState); diff --git a/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cxx b/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cxx index d49aa10b63f0ff517ad386fc571b9da43f7abe48..fb04dad3430451b8325393d2db4407383b452242 100644 --- a/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cxx +++ b/alib2algo/src/automaton/determinize/DeterminizeNFAPart.cxx @@ -24,7 +24,7 @@ automaton::DFA Determinize::determinize(const automaton::MultiInitialStateNFA& n // 2 std::deque<automaton::State> todo; - todo.push_back(initialState); + todo.push_back(std::move(initialState)); do { // 3a, c @@ -35,7 +35,7 @@ automaton::DFA Determinize::determinize(const automaton::MultiInitialStateNFA& n for (const alphabet::Symbol& input : nfa.getInputAlphabet()) { std::set<automaton::State> targetNFAStates; for(automaton::State nfaState : std::make_moveable_set(recreateNFAStates(state))) { - auto iter = nfa.getTransitions().find(std::make_pair(std::move(nfaState), alphabet::Symbol(input))); + auto iter = nfa.getTransitions().find(std::make_pair(std::move(nfaState), input)); if(iter != nfa.getTransitions().end()) { targetNFAStates.insert(iter->second.begin(), iter->second.end()); } @@ -45,10 +45,10 @@ automaton::DFA Determinize::determinize(const automaton::MultiInitialStateNFA& n // 4 bool existed = !res.addState(dfaState); - // 3b - res.addTransition(state, input, dfaState); - if(!existed) todo.push_back(std::move(dfaState)); + + // 3b + res.addTransition(std::move(state), input, std::move(dfaState)); } } while(!todo.empty()); @@ -73,7 +73,7 @@ automaton::DFA Determinize::determinize(const automaton::NFA& nfa) { // 2 std::deque<automaton::State> todo; - todo.push_back(initialState); + todo.push_back(std::move(initialState)); do { // 3a, c @@ -84,7 +84,7 @@ automaton::DFA Determinize::determinize(const automaton::NFA& nfa) { for (const alphabet::Symbol& input : nfa.getInputAlphabet()) { std::set<automaton::State> targetNFAStates; for(automaton::State nfaState : std::make_moveable_set(recreateNFAStates(state))) { - auto iter = nfa.getTransitions().find(std::make_pair(std::move(nfaState), alphabet::Symbol(input))); + auto iter = nfa.getTransitions().find(std::make_pair(std::move(nfaState), input)); if(iter != nfa.getTransitions().end()) { targetNFAStates.insert(iter->second.begin(), iter->second.end()); } @@ -94,10 +94,10 @@ automaton::DFA Determinize::determinize(const automaton::NFA& nfa) { // 4 bool existed = !res.addState(dfaState); - // 3b - res.addTransition(state, input, dfaState); + if(!existed) todo.push_back(dfaState); - if(!existed) todo.push_back(std::move(dfaState)); + // 3b + res.addTransition(std::move(state), input, std::move(dfaState)); } } while(!todo.empty());