Rustコトハジメ

プログラミング言語Rustと競プロに関する情報をお届けします。

BTreeSetをタプルで使用した時のrange関数の挙動

Rustで競プロをする時に役立ちそうな情報です。

何かソート可能な値であれば二分木に突っ込むことは可能だろうというのは想像が付きますが、rangeもタプルで使うことが出来るようです。

use std::collections::BTreeSet;
fn main()
{
    let mut s=BTreeSet::new();
    for i in 1..100 {
        s.insert((i,0));
        s.insert((i,1));
    }
    let mut it = s.range((50,0)..);
    dbg!(it.next()); dbg!(it.next()); dbg!(it.next());
    
    let mut it = s.range(..(50,1)).rev();
    dbg!(it.next()); dbg!(it.next()); dbg!(it.next());
}

の出力は、(50,0),(50,1),(51,0),(50,0),(49,1),(49,0)となります。