]> granicus.if.org Git - graphviz/commitdiff
mingle bundle: replace a 'unique_ptr' with a 'vector'
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 16 Jan 2022 22:04:09 +0000 (14:04 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Thu, 20 Jan 2022 01:12:34 +0000 (17:12 -0800)
Similar to the prior commit, when the `std::unique_ptr` usage was added here in
176c8a163a951a2b801956ed4a00da05603e3a06, I was incorrectly too focused on
preserving the previous property of this being a heap-allocated array. This is
not necessary, and using a `std::vector` instead allows more flexibility. E.g.
depending on the `std::vector` implementation, it could choose to allocate this
array on the stack instead of the heap.

cmd/mingle/minglemain.cpp

index 42f1990aa3c4129dee7d5ac06641768f2bc83b92..018359211c749caef303a5d669652de420970b2d 100644 (file)
@@ -16,7 +16,6 @@
 #include <getopt.h>
 #include <iomanip>
 #include <iostream>
-#include <memory>
 #include <sstream>
 #include <vector>
 
@@ -441,7 +440,7 @@ bundle (Agraph_t* g, opts_t* opts)
                
        ia = A->ia; ja = A->ja;
        nz = A->nz;
-       std::unique_ptr<double[]> xx(new double[nz * 4]);
+       std::vector<double> xx(nz * 4);
        nz = 0;
        dim = 4;
        for (i = 0; i < A->m; i++){
@@ -458,12 +457,12 @@ bundle (Agraph_t* g, opts_t* opts)
        if (Verbose)
                std::cerr << "n = " << A->m << " nz = " << nz << '\n';
 
-       B = nearest_neighbor_graph(nz, MIN(opts->nneighbors, nz), xx.get(), eps);
+       B = nearest_neighbor_graph(nz, MIN(opts->nneighbors, nz), xx.data(), eps);
 
        SparseMatrix_delete(A);
        A = B;
        free(x);
-       x = xx.get();
+       x = xx.data();
 
        dim = 2;