ページへ戻る

− Links

 印刷 

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

wiki:SampleCodes/Phobos/range/3


ページ内コンテンツ
  • 概要
  • ポイント
  • サンプルコード
  • 実行結果
  • 投票とコメント

概要 anchor.png[3] Edit [4]

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

Page Top

ポイント anchor.png[5] Edit [6]

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

Page Top

サンプルコード anchor.png[7] Edit [8]

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[9] Edit [10]

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[11] Edit [12]

選択肢 投票
大変参考になった0  
参考になった0  
あまり参考にならなかった0  
まったく参考にならなかった0  

コメントはありません。 コメント​/SampleCodes​/Phobos​/range​/3編集[13]

お名前:

Last-modified: 2013-03-22 (金) 18:15:08 (JST) (1585d) by SHOO