aboutsummaryrefslogtreecommitdiffstats
path: root/common/nextpnr.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/nextpnr.h')
-rw-r--r--common/nextpnr.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/common/nextpnr.h b/common/nextpnr.h
index f9376fea..5fa946e1 100644
--- a/common/nextpnr.h
+++ b/common/nextpnr.h
@@ -631,15 +631,21 @@ struct DeterministicRNG
rng64();
}
- template <typename T> void shuffle(std::vector<T> &a)
+ template <typename Iter> void shuffle(const Iter& begin, const Iter& end)
{
- for (size_t i = 0; i != a.size(); i++) {
- size_t j = i + rng(a.size() - i);
+ size_t size = end - begin;
+ for (size_t i = 0; i != size; i++) {
+ size_t j = i + rng(size - i);
if (j > i)
- std::swap(a[i], a[j]);
+ std::swap(*(begin + i), *(begin + j));
}
}
+ template <typename T> void shuffle(std::vector<T> &a)
+ {
+ shuffle(a.begin(), a.end());
+ }
+
template <typename T> void sorted_shuffle(std::vector<T> &a)
{
std::sort(a.begin(), a.end());