Cur: 2013-03-22 (Fri) 18:15:08 SHOO source Edit
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

Front page   Edit Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 2650, today: 1, yesterday: 1
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu