diff --git a/include/contractor/contracted_edge_container.hpp b/include/contractor/contracted_edge_container.hpp index 5cad19ae3..b9c1dddac 100644 --- a/include/contractor/contracted_edge_container.hpp +++ b/include/contractor/contracted_edge_container.hpp @@ -108,7 +108,7 @@ struct ContractedEdgeContainer edges.insert(edges.end(), new_edges.begin(), new_end); auto edges_size = edges.size(); auto new_edges_size = std::distance(new_edges.begin(), new_end); - BOOST_ASSERT(edges_size >= new_edges_size); + BOOST_ASSERT(static_cast(edges_size) >= new_edges_size); flags.resize(edges_size); std::fill(flags.begin() + edges_size - new_edges_size, flags.end(), flag); diff --git a/include/util/dynamic_graph.hpp b/include/util/dynamic_graph.hpp index cfc661fe0..f2a3d8b3b 100644 --- a/include/util/dynamic_graph.hpp +++ b/include/util/dynamic_graph.hpp @@ -115,7 +115,7 @@ template class DynamicGraph number_of_nodes = nodes; number_of_edges = static_cast(graph.size()); - node_array.resize(number_of_nodes + 1); + node_array.resize(number_of_nodes); EdgeIterator edge = 0; EdgeIterator position = 0; for (const auto node : irange(0u, number_of_nodes)) @@ -129,7 +129,6 @@ template class DynamicGraph node_array[node].edges = edge - last_edge; position += node_array[node].edges; } - node_array.back().first_edge = position; edge_list.reserve(static_cast(edge_list.size() * 1.1)); edge_list.resize(position); edge = 0; @@ -144,6 +143,8 @@ template class DynamicGraph ++edge; } } + + BOOST_ASSERT(node_array.size() == number_of_nodes); } // Copy&move for the same data @@ -191,6 +192,8 @@ template class DynamicGraph // Removes all edges to and from nodes for which filter(node_id) returns false template auto Filter(Pred filter) const & { + BOOST_ASSERT(node_array.size() == number_of_nodes); + DynamicGraph other; other.number_of_nodes = number_of_nodes; @@ -202,6 +205,8 @@ template class DynamicGraph std::transform( node_array.begin(), node_array.end(), other.node_array.begin(), [&](const Node &node) { const EdgeIterator first_edge = other.edge_list.size(); + + BOOST_ASSERT(node_id < number_of_nodes); if (filter(node_id++)) { std::copy_if(edge_list.begin() + node.first_edge, @@ -416,7 +421,7 @@ template class DynamicGraph void Renumber(const std::vector &old_to_new_node) { // permutate everything but the sentinel - util::inplacePermutation(node_array.begin(), std::prev(node_array.end()), old_to_new_node); + util::inplacePermutation(node_array.begin(), node_array.end(), old_to_new_node); // Build up edge permutation auto new_edge_index = 0; diff --git a/src/contractor/graph_contractor.cpp b/src/contractor/graph_contractor.cpp index 93b33704d..8f4b8b82e 100644 --- a/src/contractor/graph_contractor.cpp +++ b/src/contractor/graph_contractor.cpp @@ -384,7 +384,7 @@ void RenumberData(std::vector &remaining_nodes, // we need to make a copy here because we are going to modify it auto to_orig = new_to_old_node_id; - auto new_node_id = 0; + auto new_node_id = 0u; // All remaining nodes get the low IDs for (auto &remaining : remaining_nodes)