From 9273dd8dda57ea4615f2acfa5fc255d151d584e8 Mon Sep 17 00:00:00 2001 From: ROUVREAU Vincent Date: Mon, 25 May 2020 11:01:05 +0200 Subject: Code review: Remove num_vertices and initialize sparse matrix in the constructor --- .../include/gudhi/Flag_complex_sparse_matrix.h | 28 +++++++--------------- 1 file changed, 9 insertions(+), 19 deletions(-) (limited to 'src/Collapse') diff --git a/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h b/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h index 293b22e6..4922a1a7 100644 --- a/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h +++ b/src/Collapse/include/gudhi/Flag_complex_sparse_matrix.h @@ -82,9 +82,6 @@ class Flag_complex_sparse_matrix { // Map from row index to its vertex handle std::vector row_to_vertex_; - // Vertices stored as an unordered_set - std::unordered_set vertices_; - // Unordered set of removed edges. (to enforce removal from the matrix) std::unordered_set> u_set_removed_edges_; @@ -326,13 +323,17 @@ class Flag_complex_sparse_matrix { Flag_complex_sparse_matrix(const Filtered_edge_range& filtered_edge_range) : f_edge_vector_(filtered_edge_range.begin(), filtered_edge_range.end()), rows_(0) { + // To get the number of vertices + std::unordered_set vertices; for (Filtered_edge filtered_edge : filtered_edge_range) { Vertex_handle u; Vertex_handle v; std::tie(u,v) = std::get<0>(filtered_edge); - vertices_.emplace(u); - vertices_.emplace(v); + vertices.emplace(u); + vertices.emplace(v); } + // Initializing sparse_row_adjacency_matrix_, This is a row-major sparse matrix. + sparse_row_adjacency_matrix_ = Sparse_row_matrix(vertices.size(), vertices.size()); } /** \brief Flag_complex_sparse_matrix constructor from a proximity graph, cf. `Gudhi::compute_proximity_graph`. @@ -343,11 +344,9 @@ class Flag_complex_sparse_matrix { * The constructor is computing and filling a vector of `Flag_complex_sparse_matrix::Filtered_edge` */ Flag_complex_sparse_matrix(const Proximity_graph& one_skeleton_graph) - : rows_(0) { - // Insert all vertices_ - for (auto v_it = boost::vertices(one_skeleton_graph); v_it.first != v_it.second; ++v_it.first) { - vertices_.emplace(*(v_it.first)); - } + : sparse_row_adjacency_matrix_(boost::num_vertices(one_skeleton_graph), boost::num_vertices(one_skeleton_graph)), + rows_(0) + { // Insert all edges for (auto edge_it = boost::edges(one_skeleton_graph); edge_it.first != edge_it.second; ++edge_it.first) { @@ -383,9 +382,6 @@ class Flag_complex_sparse_matrix { std::sort(f_edge_vector_.begin(), f_edge_vector_.end(), sort_by_filtration); #endif - // Initializing sparse_row_adjacency_matrix_, This is a row-major sparse matrix. - sparse_row_adjacency_matrix_ = Sparse_row_matrix(vertices_.size(), vertices_.size()); - while (endIdx < f_edge_vector_.size()) { Filtered_edge fec = f_edge_vector_[endIdx]; Edge edge = std::get<0>(fec); @@ -409,12 +405,6 @@ class Flag_complex_sparse_matrix { } } - /** \brief Returns the number of vertices in the data structure. - * - * @return the number of vertices (which is also the number of rows in the Matrix). - */ - std::size_t num_vertices() const { return vertices_.size(); } - }; } // namespace collapse -- cgit v1.2.3