From 43e410a9000b1cd6837731127a555ac21395600b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 20 Jan 2022 19:19:20 +0100 Subject: [PATCH 1/2] Fix clang compiler warnings --- lib/FLANN/algorithms/kdtree_index.h | 4 +++- lib/FLANN/util/lsh_table.h | 3 ++- lib/FLANN/util/random.h | 4 ++-- src/mvs/workspace.h | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/FLANN/algorithms/kdtree_index.h b/lib/FLANN/algorithms/kdtree_index.h index 12e787c7ae..172ff9c696 100644 --- a/lib/FLANN/algorithms/kdtree_index.h +++ b/lib/FLANN/algorithms/kdtree_index.h @@ -261,11 +261,13 @@ class KDTreeIndex : public NNIndex mean_ = new DistanceType[veclen_]; var_ = new DistanceType[veclen_]; + RandomGenerator generator; + tree_roots_.resize(trees_); /* Construct the randomized trees. */ for (int i = 0; i < trees_; i++) { /* Randomize the order of vectors to allow for unbiased sampling. */ - std::random_shuffle(ind.begin(), ind.end()); + std::shuffle(ind.begin(), ind.end(), generator); tree_roots_[i] = divideTree(&ind[0], int(size_) ); } delete[] mean_; diff --git a/lib/FLANN/util/lsh_table.h b/lib/FLANN/util/lsh_table.h index e577595332..30da440e92 100644 --- a/lib/FLANN/util/lsh_table.h +++ b/lib/FLANN/util/lsh_table.h @@ -364,7 +364,8 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int // A bit brutal but fast to code std::vector indices(feature_size * CHAR_BIT); for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; - std::random_shuffle(indices.begin(), indices.end()); + RandomGenerator generator; + std::shuffle(ind.begin(), ind.end(), generator); // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { diff --git a/lib/FLANN/util/random.h b/lib/FLANN/util/random.h index 0a98928c94..5dd78a30e7 100644 --- a/lib/FLANN/util/random.h +++ b/lib/FLANN/util/random.h @@ -110,14 +110,14 @@ class UniqueRandom */ void init(int n) { - static RandomGenerator generator; + RandomGenerator generator; // create and initialize an array of size n vals_.resize(n); size_ = n; for (int i = 0; i < size_; ++i) vals_[i] = i; // shuffle the elements in the array - std::random_shuffle(vals_.begin(), vals_.end(), generator); + std::shuffle(vals_.begin(), vals_.end(), generator); counter_ = 0; } diff --git a/src/mvs/workspace.h b/src/mvs/workspace.h index de9c988718..9ade727ec5 100644 --- a/src/mvs/workspace.h +++ b/src/mvs/workspace.h @@ -66,6 +66,7 @@ class Workspace { }; Workspace(const Options& options); + virtual ~Workspace() = default; // Do nothing when we use a cache. Data is loaded as needed. virtual void Load(const std::vector& image_names); From beb1b3a499f64c34096d02194748e1d950a2e969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Sch=C3=B6nberger?= Date: Thu, 20 Jan 2022 19:31:22 +0100 Subject: [PATCH 2/2] Fix --- lib/FLANN/algorithms/kdtree_index.h | 3 ++- lib/FLANN/util/lsh_table.h | 4 ++-- lib/FLANN/util/random.h | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/FLANN/algorithms/kdtree_index.h b/lib/FLANN/algorithms/kdtree_index.h index 172ff9c696..660d31b544 100644 --- a/lib/FLANN/algorithms/kdtree_index.h +++ b/lib/FLANN/algorithms/kdtree_index.h @@ -37,6 +37,7 @@ #include #include #include +#include #include "FLANN/general.h" #include "FLANN/algorithms/nn_index.h" @@ -261,7 +262,7 @@ class KDTreeIndex : public NNIndex mean_ = new DistanceType[veclen_]; var_ = new DistanceType[veclen_]; - RandomGenerator generator; + std::default_random_engine generator; tree_roots_.resize(trees_); /* Construct the randomized trees. */ diff --git a/lib/FLANN/util/lsh_table.h b/lib/FLANN/util/lsh_table.h index 30da440e92..d6f6158a87 100644 --- a/lib/FLANN/util/lsh_table.h +++ b/lib/FLANN/util/lsh_table.h @@ -39,6 +39,7 @@ #include #include #include +#include // TODO as soon as we use C++0x, use the code in USE_UNORDERED_MAP #if USE_UNORDERED_MAP #include @@ -364,8 +365,7 @@ inline LshTable::LshTable(unsigned int feature_size, unsigned int // A bit brutal but fast to code std::vector indices(feature_size * CHAR_BIT); for (size_t i = 0; i < feature_size * CHAR_BIT; ++i) indices[i] = i; - RandomGenerator generator; - std::shuffle(ind.begin(), ind.end(), generator); + std::shuffle(indices.begin(), indices.end(), std::default_random_engine()); // Generate a random set of order of subsignature_size_ bits for (unsigned int i = 0; i < key_size_; ++i) { diff --git a/lib/FLANN/util/random.h b/lib/FLANN/util/random.h index 5dd78a30e7..c4a4f70272 100644 --- a/lib/FLANN/util/random.h +++ b/lib/FLANN/util/random.h @@ -35,6 +35,7 @@ #include #include #include +#include #include "FLANN/general.h" @@ -110,14 +111,13 @@ class UniqueRandom */ void init(int n) { - RandomGenerator generator; // create and initialize an array of size n vals_.resize(n); size_ = n; for (int i = 0; i < size_; ++i) vals_[i] = i; // shuffle the elements in the array - std::shuffle(vals_.begin(), vals_.end(), generator); + std::shuffle(vals_.begin(), vals_.end(), std::default_random_engine()); counter_ = 0; }