現: 2013-03-22 (金) 18:15:08 SHOO ソース 編集
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
  

  • SampleCodes/Phobos/range/3 のバックアップ差分(No. All)
    • 現: 2013-03-22 (金) 18:15:08 SHOO

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 1518, today: 2, yesterday: 2
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu