From b078259d81b30dc113b89d1de533376fc9af6c3c Mon Sep 17 00:00:00 2001
From: Tomas Pecka <tomas.pecka@fit.cvut.cz>
Date: Thu, 9 Apr 2020 11:49:39 +0200
Subject: [PATCH] remove unwanted copies

---
 .../src/automaton/properties/SynchronizingWordExistence.h   | 4 ++--
 .../GeneralizedLevenshteinSequenceMatchingAutomaton.h       | 2 +-
 .../stringology/matching/HammingSequenceMatchingAutomaton.h | 2 +-
 .../indexes/stringology/SuffixTrieNodeTerminatingSymbol.cpp | 2 +-
 alib2graph_algo/src/maximum_flow/FordFulkerson.cpp          | 6 +++---
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/alib2algo/src/automaton/properties/SynchronizingWordExistence.h b/alib2algo/src/automaton/properties/SynchronizingWordExistence.h
index 1cf13953a9..c7a92cba10 100644
--- a/alib2algo/src/automaton/properties/SynchronizingWordExistence.h
+++ b/alib2algo/src/automaton/properties/SynchronizingWordExistence.h
@@ -66,7 +66,7 @@ bool SynchronizingWordExistence::exists ( const automaton::DFA < SymbolType, Sta
 	std::queue < ext::pair < StateType, StateType > > q;
 	ext::set < ext::pair < StateType, StateType > > visited;
 
-	for ( const ext::pair < StateType, StateType > state: cart.getStates ( ) ) {
+	for ( const ext::pair < StateType, StateType > & state: cart.getStates ( ) ) {
 		if ( state.first != state.second )
 			continue;
 
@@ -78,7 +78,7 @@ bool SynchronizingWordExistence::exists ( const automaton::DFA < SymbolType, Sta
 		const ext::pair < StateType, StateType > cstate = std::move ( q.front ( ) );
 		q.pop ( );
 
-		for ( const auto transition : cart.getTransitionsToState ( cstate ) ) {
+		for ( const auto & transition : cart.getTransitionsToState ( cstate ) ) {
 			const auto & srcState = transition.first.first;
 
 			if ( visited.count ( srcState ) == 0 ) {
diff --git a/alib2algo/src/stringology/matching/GeneralizedLevenshteinSequenceMatchingAutomaton.h b/alib2algo/src/stringology/matching/GeneralizedLevenshteinSequenceMatchingAutomaton.h
index c350f99f54..21b30fd8fd 100644
--- a/alib2algo/src/stringology/matching/GeneralizedLevenshteinSequenceMatchingAutomaton.h
+++ b/alib2algo/src/stringology/matching/GeneralizedLevenshteinSequenceMatchingAutomaton.h
@@ -72,7 +72,7 @@ template < class SymbolType >
 automaton::EpsilonNFA < SymbolType, ext::pair<unsigned int, unsigned int> > GeneralizedLevenshteinSequenceMatchingAutomaton::construct(const string::WildcardLinearString < SymbolType > & pattern, unsigned int allowed_errors) {
 	auto result = stringology::matching::GeneralizedLevenshteinMatchingAutomaton::construct(pattern, allowed_errors);
 
-	SymbolType wildcard = pattern.getWildcardSymbol();
+	const SymbolType& wildcard = pattern.getWildcardSymbol();
 	ext::set<SymbolType> alphabet_without_wildcard = pattern.getAlphabet();
 	alphabet_without_wildcard.erase(wildcard);
 
diff --git a/alib2algo/src/stringology/matching/HammingSequenceMatchingAutomaton.h b/alib2algo/src/stringology/matching/HammingSequenceMatchingAutomaton.h
index 398e76c49a..8fd3ec406c 100644
--- a/alib2algo/src/stringology/matching/HammingSequenceMatchingAutomaton.h
+++ b/alib2algo/src/stringology/matching/HammingSequenceMatchingAutomaton.h
@@ -61,7 +61,7 @@ template < class SymbolType >
 automaton::NFA < SymbolType, ext::pair<unsigned int, unsigned int> > HammingSequenceMatchingAutomaton::construct(const string::WildcardLinearString < SymbolType > & pattern, unsigned int allowed_errors) {
 	automaton::NFA < SymbolType, ext::pair<unsigned int, unsigned int > > result = stringology::matching::HammingMatchingAutomaton::construct(pattern, allowed_errors);
 
-	SymbolType wildcard = pattern.getWildcardSymbol();
+	const SymbolType& wildcard = pattern.getWildcardSymbol();
 	ext::set<SymbolType> alphabet_without_wildcard = pattern.getAlphabet();
 	alphabet_without_wildcard.erase(wildcard);
 
diff --git a/alib2data_experimental/src/indexes/stringology/SuffixTrieNodeTerminatingSymbol.cpp b/alib2data_experimental/src/indexes/stringology/SuffixTrieNodeTerminatingSymbol.cpp
index 0ce9efe7b2..eea84c0f76 100644
--- a/alib2data_experimental/src/indexes/stringology/SuffixTrieNodeTerminatingSymbol.cpp
+++ b/alib2data_experimental/src/indexes/stringology/SuffixTrieNodeTerminatingSymbol.cpp
@@ -64,7 +64,7 @@ SuffixTrieNodeTerminatingSymbol & SuffixTrieNodeTerminatingSymbol::operator =( S
 }
 
 SuffixTrieNodeTerminatingSymbol::~SuffixTrieNodeTerminatingSymbol ( ) noexcept {
-	for ( auto element : m_children )
+	for ( const auto& element : m_children )
 		delete element.second;
 
 	m_children.clear ( );
diff --git a/alib2graph_algo/src/maximum_flow/FordFulkerson.cpp b/alib2graph_algo/src/maximum_flow/FordFulkerson.cpp
index 7f4e75b6a2..82155040fd 100644
--- a/alib2graph_algo/src/maximum_flow/FordFulkerson.cpp
+++ b/alib2graph_algo/src/maximum_flow/FordFulkerson.cpp
@@ -161,15 +161,15 @@ static Flow fordfulkerson_impl_dir(const DirectedGraph &graph,
     updateFlow_dir(source, sink, ctx);
 
   // assign negative flow for the reversed pairs of nodes ?
-  for (auto u : ctx.flow)
-    for (auto v : u.second)
+  for (auto& u : ctx.flow)
+    for (auto& v : u.second)
       if (ctx.flow[u.first][v.first] != 0)
         ctx.flow[v.first][u.first] = -ctx.flow[u.first][v.first];
 
   return ctx.flow;
 }
 
-static Flow fordfulkerson_impl_undir(const UndirectedGraph &ugraph, node::Node source, node::Node sink) {
+static Flow fordfulkerson_impl_undir(const UndirectedGraph &ugraph, const node::Node& source, const node::Node& sink) {
   DirectedGraph graph;
 
   for (auto &node: ugraph.getNodes()) {
-- 
GitLab