import std.stdio : writeln; import std.random : Mt19937; import std.algorithm : advance; import std.range : front, popFront; void main() { { int[] arr = [5,4,3,2,1]; writeln(arr.front);//5 arr.popFront; writeln(arr.front);//4 arr.popFront; writeln(arr.front);//3 } writeln("---"); { int[] arr = [5,4,3,2,1]; advance(arr, 2); //最初の2つを飛ばす writeln(arr.front);//3 arr.popFront; writeln(arr.front);//2 arr.popFront; writeln(arr.front);//1 } writeln("---"); { Mt19937 gen; writeln(gen.front);//(a) gen.popFront; writeln(gen.front);//(b) gen.popFront; writeln(gen.front);//(c) } writeln("---"); { Mt19937 gen; advance(gen, 2); //最初の2つを飛ばす? writeln(gen.front);//(c) gen.popFront; writeln(gen.front);//(d) gen.popFront; writeln(gen.front);//(e) } }
advance(arr, 2); と advance(gen, 2); の挙動が違う.なんで?
5
4
3
- -
3
2
1
- -
581869302
3890346734
3586334585
- -
3890346734
3586334585
545404204