<p>In <a href="https://github.com/mlpack/mlpack/pull/691#discussion_r68070509">src/mlpack/methods/lsh/lsh_search_impl.hpp</a>:</p>
<pre style='color:#555'>&gt; +}
&gt; +
&gt; +// Inline function used by GetAdditionalProbingBins. The vector shift operation
&gt; +// replaces the largest element of a vector A with (largest element) + 1.
&gt; +inline void perturbationShift(std::vector&lt;size_t&gt; &amp;A)
&gt; +{
&gt; +  size_t max_pos = 0;
&gt; +  size_t max = A[0];
&gt; +  for (size_t i = 1; i &lt; A.size(); ++i)
&gt; +  {
&gt; +    if (A[i] &gt; max)
&gt; +    {
&gt; +      max = A[i];
&gt; +      max_pos = i;
&gt; +    }
&gt; +  }
</pre>
<p>What if instead of A storing indices to some of the 2<em>numProj elements, each A was 2</em>numProj long and stored 1 if the corresponding element is "included" and 0 otherwise?<br>
So instead of A = [1, 5] we would have A = [0 1 0 0 0 1 0 ... 0]<br>
If arma::Row compresses its elements then this will avoid both the extra space and the use of std::vector.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/mlpack/mlpack/pull/691/files/fa7f62da6a4cfe7fa45e297d7a4a1491c9c39bb1#r68070509">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe/AJ4bFK4Qw2xFjg6KFsuho1zpAP_vOmCmks5qOU-CgaJpZM4IxQW5">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AJ4bFF_7fplEeFZIQzZYDD3wEPmHTEvAks5qOU-CgaJpZM4IxQW5.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/mlpack/mlpack/pull/691/files/fa7f62da6a4cfe7fa45e297d7a4a1491c9c39bb1#r68070509"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>