Back to page

− Links

 Print 

Diff of SampleCodes​/Phobos​/range​/3 :: D言語友の会

Diff of wiki:SampleCodes/Phobos/range/3

  
Cur: 2013-03-22 (Fri) 18:15:08 SHOO[3] source[4] Edit[5]
Line 1: Line 1:
 +TITLE:要素を先頭に移動する
 +#navi
 +* 概要 [#ddf61a6f]
 +std.algorithm.bringToFront関数について解説します。
 +
 +
 +* ポイント [#f75f1932]
 +bringToFront関数は2つのRangeを引数に取ります。
 +仮にその2つのRangeをa, bとするとa、bの順番に並んでいたものを、b、aの順番に並び替え、aとbの中身に入れ直します。範囲がかぶっていた場合は、かぶっている部分を無視して並び替えます。
 +
 +* サンプルコード [#j1d10815]
 +#code(d){{{
 +import std.stdio, std.algorithm;
 +
 +void main()
 +{
 +    auto a = [0,1,2,3,4,5,6,7,8,9];
 +    auto b = [0,1,2,3,4,5,6,7,8,9];
 +    auto c = [0,1,2,3,4,5,6,7,8,9];
 +    
 +    assert(a[1..5].equal([1,2,3,4]));
 +    assert(a[3..7].equal([3,4,5,6]));
 +    assert(c[1..2].equal([1]));
 +    assert(c[3..7].equal([3,4,5,6]));
 +    
 +    a[1..5].bringToFront(a[3..7]); // 3,4がかぶっているので、a[1..5]の後半2要素は無視される
 +    b[1..3].bringToFront(b[3..7]);
 +    c[1..2].bringToFront(c[3..7]);
 +    
 +    assert(a[1..5].equal([3,4,5,6]));
 +    assert(a[3..7].equal([5,6,1,2]));
 +    assert(a.equal(b));
 +    assert(c[1..2].equal([3]));
 +    assert(c[3..7].equal([4,5,6,1]));
 +    
 +    writeln(a);
 +    writeln(b);
 +    writeln(c);
 +}
 +}}}
 +* 実行結果 [#i184fdd7]
 +#code(console){{{
 +$ dmd -run main
 +a: [0, 3, 4, 5, 6, 1, 2, 7, 8, 9]
 +b: [0, 3, 4, 5, 6, 1, 2, 7, 8, 9]
 +c: [0, 3, 2, 4, 5, 6, 1, 7, 8, 9]
 +}}}
 +
 +#navi
 +
 +* 投票とコメント [#v7995374]
 +#vote(大変参考になった,参考になった,あまり参考にならなかった,まったく参考にならなかった,#notimestamp)
 +#pcomment
  

  • Backup diff of SampleCodes/Phobos/range/3(No. All)
    • Cur: 2013-03-22 (Fri) 18:15:08 SHOO[3]