// خريطة الشجرة B تبقي مفاتيحها مرتبة أيا كان ترتيب الإدراج.
استورد std.io.println;
استورد std.text.number;
استورد std.text.transform;
استورد std.collections.btree_map;
عرف قارن_عددين(اليسار: &عدد, اليمين: &عدد): عدد { أرجع *اليسار - *اليمين; }
عرف الرئيسية(): عدد {
دع النتائج: متغير خريطة_شجرة_بي<عدد, نص> = أنشئ_خريطة_شجرة_بي(قارن_عددين);
أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 30, "الثالث");
أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 10, "الأول");
أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 20, "الثاني");
دع المفاتيح: متجه عدد = مفاتيح_خريطة_شجرة_بي(&النتائج);
دع النصوص: متغير متجه نص = [];
دع ف: متغير طبيعي = 0;
طالما (ف < (الطول(المفاتيح) مثل طبيعي)) {
ألحق(النصوص, عدد_إلى_نص(المفاتيح[ف]));
ف := ف + 1;
}
دع المسافة: نص = " ";
اطبع_سطر(صل_النصوص(&النصوص, &المسافة));
دع المطلوب: عدد = 20;
طابق ابحث_في_خريطة_شجرة_بي(&النتائج, &المطلوب) مع
| اختياري.موجود(الاسم) -> { اطبع_سطر(الاسم); }
| اختياري.لا_شيء -> { اطبع_سطر("غير موجود"); };
أرجع 0;
}// A B-tree map keeps its keys sorted, whatever the insertion order.
import std.io.println;
import std.text.number;
import std.text.transform;
import std.collections.btree_map;
def compare_ints(left: &int, right: &int): int { return *left - *right; }
def main(): int {
let scores: mutable btree_map<int, string> = new_btree_map(compare_ints);
btree_map_insert(&mutable scores, 30, "third");
btree_map_insert(&mutable scores, 10, "first");
btree_map_insert(&mutable scores, 20, "second");
let keys: vector int = btree_map_keys(&scores);
let texts: mutable vector string = [];
let i: mutable uint = 0;
while (i < (length(keys) as uint)) {
append(texts, int_to_text(keys[i]));
i := i + 1;
}
let space: string = " ";
println(join(&texts, &space));
let wanted: int = 20;
match btree_map_get(&scores, &wanted) with
| option.some(name) -> { println(name); }
| option.none -> { println("missing"); };
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/collections/ordered_map.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/collections/ordered_map.sn -o build/example && ./build/example