Cur: 2009-07-22 (Wed) 00:28:38 SHOO source Edit
Line 1: Line 1:
 +TITLE:delegateをつかった並べ替え
 +sort等のアルゴリズムには、delegateを利用することが可能です。~
 +元々はsortアルゴリズムのテンプレート引数がaliasパラメタで、リテラルをパラメータにとることが可能であることに由来します。~
 +グローバル名やローカル名なども利用可能なので、関数名を渡すことも、もちろん可能です。
 +参考: http://www.kmonos.net/alang/d/2.0/template.html#TemplateAliasParameter
 +参考: http://www.kmonos.net/alang/d/2.0/phobos/std_algorithm.html#sort
 +
 +これを応用することで、たとえば、3次元のワールド座標上の物体をカメラの座標からの距離で並べ替える「Zソート」などに利用可能かもしれません。
 +
 +#code(d,title=main.d){{{
 +import std.stdio;
 +import std.algorithm: sort;
 +
 +void main()
 +{
 +    int[] ary = [0,3,1,2];
 +    real x = 1.2;
 +    // xの値(1.2)に近い順に並び変える
 +    // 1(0.2), 2(0.8), 0(1.2), 3(1.8)の順
 +    sort!((int a, int b)
 +    {
 +     return (a-x)*(a-x)<(b-x)*(b-x);
 +    })(ary);
 +    writeln(ary);
 +}
 +}}}
 +
 +#code(console){{{
 +$ dmd -run main
 +1 2 0 3
 +}}}
 +
 +* 投票とコメント [#ae56d1f6]
 +#vote(大変参考になった,参考になった,あまり参考にならなかった,まったく参考にならなかった,#notimestamp)
 +#pcomment
  

  • Backup diff of SampleCodes/Phobos/range/1(No. All)
    • Cur: 2009-07-22 (Wed) 00:28:38 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: 1091, today: 2, yesterday: 1
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu