概要 anchor.png Edit

std.algorithm.bringToFront関数について解説します。

Page Top

ポイント anchor.png Edit

bringToFront関数は2つのRangeを引数に取ります。 仮にその2つのRangeをa, bとするとa、bの順番に並んでいたものを、b、aの順番に並び替え、aとbの中身に入れ直します。範囲がかぶっていた場合は、かぶっている部分を無視して並び替えます。

Page Top

サンプルコード anchor.png Edit

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
 
 
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!
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);
}
Page Top

実行結果 anchor.png Edit

1
2
3
4
$ 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]

Page Top

投票とコメント anchor.png Edit

Choices Vote
大変参考になった0  
参考になった0  
あまり参考にならなかった0  
まったく参考にならなかった0  

No comment. コメント​/SampleCodes​/Phobos​/range​/3Edit

Name:

Front page   Edit Freeze 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: 2630, today: 1, yesterday: 0
Princeps date: 2013-03-22 (Fri) 18:15:08
Last-modified: 2013-03-22 (Fri) 18:15:08 (JST) (2779d) by SHOO
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu