السلطان
  1. الرئيسية
  2. الأمثلة
  3. المجموعات

خريطة الشجرة B تبقي مفاتيحها مرتبة أيا كان ترتيب الإدراج

collections/ordered_map.sn
// خريطة الشجرة B تبقي مفاتيحها مرتبة أيا كان ترتيب الإدراج.
استورد std.io.println;
استورد std.text.number;
استورد std.text.transform;
استورد std.collections.btree_map;

عرف قارن_عددين(اليسار: &عدد, اليمين: &عدد): عدد { أرجع *اليسار - *اليمين; }

عرف الرئيسية(): عدد {
    دع النتائج: متغير خريطة_شجرة_بي<عدد, نص> = أنشئ_خريطة_شجرة_بي(قارن_عددين);
    أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 30, "الثالث");
    أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 10, "الأول");
    أدرج_في_خريطة_شجرة_بي(&متغير النتائج, 20, "الثاني");
    دع المفاتيح: متجه عدد = مفاتيح_خريطة_شجرة_بي(&النتائج);
    دع النصوص: متغير متجه نص = [];
    دع ف: متغير طبيعي = 0;
    طالما (ف < (الطول(المفاتيح) مثل طبيعي)) {
        ألحق(النصوص, عدد_إلى_نص(المفاتيح[ف]));
        ف := ف + 1;
    }
    دع المسافة: نص = " ";
    اطبع_سطر(صل_النصوص(&النصوص, &المسافة));
    دع المطلوب: عدد = 20;
    طابق ابحث_في_خريطة_شجرة_بي(&النتائج, &المطلوب) مع
    | اختياري.موجود(الاسم) -> { اطبع_سطر(الاسم); }
    | اختياري.لا_شيء -> { اطبع_سطر("غير موجود"); };
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/collections/ordered_map.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/collections/ordered_map.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة