From: Rene Gassmoeller Date: Thu, 18 Aug 2016 21:46:19 +0000 (-0600) Subject: Pass by const reference. Different sort approach. X-Git-Tag: v8.5.0-rc1~753^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e38693c67e5be5afd5270696320eca596e564053;p=dealii.git Pass by const reference. Different sort approach. --- diff --git a/include/deal.II/base/quadrature_lib.h b/include/deal.II/base/quadrature_lib.h index 3e291b77f4..e3e530ba63 100644 --- a/include/deal.II/base/quadrature_lib.h +++ b/include/deal.II/base/quadrature_lib.h @@ -438,13 +438,13 @@ public: /** * The constructor takes an arbitrary quadrature formula. */ - QSorted (const Quadrature); + QSorted (const Quadrature &quad); /** * A rule to reorder pairs of points and weights. */ - bool operator()(const std::pair > &a, - const std::pair > &b); + bool operator()(const std::size_t &a, + const std::size_t &b) const; }; /** diff --git a/source/base/quadrature_lib.cc b/source/base/quadrature_lib.cc index dd16fb4c72..e9c961c1b2 100644 --- a/source/base/quadrature_lib.cc +++ b/source/base/quadrature_lib.cc @@ -932,27 +932,26 @@ QGaussOneOverR<2>::QGaussOneOverR(const unsigned int n, template -QSorted::QSorted(Quadrature quad) : - Quadrature(quad.size()) +QSorted::QSorted(const Quadrature &quad) : + Quadrature(quad) { - std::vector< std::pair > > wp; - for (unsigned int i=0; i >(quad.weight(i), - quad.point(i))); - sort(wp.begin(), wp.end(), *this); + std::vector permutation(quad.size()); + std::iota(permutation.begin(), permutation.end(), 0); + std::sort(permutation.begin(), permutation.end(), *this); + for (unsigned int i=0; iweights[i] = wp[i].first; - this->quadrature_points[i] = wp[i].second; + this->weights[i] = quad.weight(permutation[i]); + this->quadrature_points[i] = quad.point(permutation[i]); } } template -bool QSorted::operator()(const std::pair > &a, - const std::pair > &b) +bool QSorted::operator()(const std::size_t &a, + const std::size_t &b) const { - return (a.first < b.first); + return (this->weights[a] < this->weights[b]); }