1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-24 17:10:36 +00:00

Stop using the deprecated std::random_shuffle, for the benefit of MSVC.

And generalize `hrandom_shuffle` to take an arbitrary `Iter`,
so that passing `vec.begin()` will work even with MSVC's
debug iterators. (Passing `&vec[0]` or `vec.data()` would work
either way, but I'd worry that someone would forget to do that
conscientiously every time.)
This commit is contained in:
Arthur O'Dwyer 2018-06-27 15:21:59 -07:00
parent 62db7ee250
commit 1a93fbcd45
3 changed files with 2 additions and 3 deletions

View File

@ -4732,7 +4732,7 @@ void movehex(bool mounted, int colorpair) {
for(int t=0; t<c->type; t++) if(c->mov[t] && inpair(c->mov[t], colorpair)) for(int t=0; t<c->type; t++) if(c->mov[t] && inpair(c->mov[t], colorpair))
dirtable[qdirtable++] = t; dirtable[qdirtable++] = t;
random_shuffle(dirtable, dirtable+qdirtable); hrandom_shuffle(dirtable, qdirtable);
while(qdirtable--) { while(qdirtable--) {
int t = dirtable[qdirtable]; int t = dirtable[qdirtable];
hexvisit(c->mov[t], c, t, mounted, colorpair); hexvisit(c->mov[t], c, t, mounted, colorpair);

View File

@ -37,7 +37,6 @@ using std::imag;
using std::stable_sort; using std::stable_sort;
using std::out_of_range; using std::out_of_range;
using std::get; using std::get;
using std::random_shuffle;
using std::move; using std::move;
using std::make_tuple; using std::make_tuple;

View File

@ -691,7 +691,7 @@ void describe(cell *c) {
help += "\n"; help += "\n";
vector<pair<double, int>> v; vector<pair<double, int>> v;
for(int s=0; s<samples; s++) if(whowon[s] == n) v.emplace_back(vnorm(n->net, data[s].val), s); for(int s=0; s<samples; s++) if(whowon[s] == n) v.emplace_back(vnorm(n->net, data[s].val), s);
random_shuffle(v.begin(), v.end()); hrandom_shuffle(&v[0], isize(v));
sort(v.begin(), v.end(), [] (pair<double,int> a, pair<double,int> b) { return a.first < b.first; }); sort(v.begin(), v.end(), [] (pair<double,int> a, pair<double,int> b) { return a.first < b.first; });
for(int i=0; i<isize(v) && i<20; i++) { for(int i=0; i<isize(v) && i<20; i++) {