تعد QLIBC حاليًا واحدة من أكثر مكتبات C/C ++ المرخص لها بشكل عام. الهدف من مشروع QLIBC هو توفير مكتبة عامة بسيطة وقوية C/C ++ تتضمن جميع أنواع الحاويات وروتين المكتبة العامة. يوفر مجموعة جاهزة من واجهات برمجة تطبيقات الحاويات الشائعة مع نظرة متسقة API.
يتم نشر QLIBC ضمن ترخيص BSD 2-poan المعروف باسم ترخيص BSD المبسط. يرجى إحالة وثيقة الترخيص المدرجة في الحزمة لمزيد من التفاصيل.
مرجع QLIBC Core API
مرجع QLIBC Extension API
| صفات | طاولة شجرة | جدول التجزئة | جدول التجزئة الثابت | جدول قائمة |
|---|---|---|---|---|
| بنية البيانات | شجرة ثنائية | فهرس الفتحة | كتلة الصفيف | قائمة مرتبطة |
| تعقيد البحث | س (سجل ن) | س (1) / س (ن) | س (1) / س (ن) | على) |
| أدخل التعقيد | س (سجل ن) | س (1) / س (ن) | س (1) / س (ن) | س (1) |
| حذف التعقيد | س (سجل ن) | س (1) / س (ن) | س (1) / س (ن) | على) |
| تعقيد الفضاء | على) | على) | - | على) |
| تخصيص الفضاء | متحرك | متحرك | قبل التخصيص | متحرك |
| مفتاح تخزين فرز | نعم | لا | لا | نعم (خيار) |
| مقارن المستخدم | مدعوم | - | - | مدعوم |
| مفاتيح مكررة | لا | لا | لا | نعم (خيار) |
| مفتاح تخزين هضم | لا | لا | نعم | لا |
| ابحث عن أقرب مفتاح | نعم | لا | لا | لا |
| دعم التكرار | نعم | نعم | نعم | نعم |
| أمر زيارة التكرار | مين -> ماكس | عشوائي | عشوائي | أدخل أمر |
| خيار آمن الموضوع | مدعوم | ممتلئ | مستخدم | مدعوم |
| يمكن استخدام MEM المشترك | لا | لا | نعم | لا |
جميع واجهات برمجة تطبيقات الحاويات لها نظرة ثابتة وشعور. يوفر بشكل أساسي وظيفة المبدع التي تُرجع عادةً مؤشرًا إلى بنية حاوية. أيضًا ، يمكن الوصول إلى جميع الوظائف المتعلقة بالحاوية من خلال مؤشرات الوظائف داخل الحاوية أو واجهات برمجة تطبيقات الوصول المباشر على النمط التقليدي. على سبيل المثال ،
لذلك ، بغض النظر عن الحاوية التي تستخدمها ، يمكنك ببساطة وضع العناصر في قائمة مع container->put(container, ...) أو يمكنك الاتصال بها باستخدام API المباشر مثل QTREETBL_PUB (الحاوية ، ...).
توضح الأمثلة أدناه كيف تبدو.
// create a hash-table.
qhashtbl_t *tbl = qhashtbl(0, QHASHTBL_THREADSAFE);
// add an element which key name is "score".
int x = 12345;
tbl->put(tbl, "score", &x, sizeof(int));
// get the value of the element.
int *px = tbl->get(tbl, "score", NULL, true);
if(px != NULL) {
printf("%dn", *px);
free(px);
}
// release table
tbl->free(tbl);
فيما يلي تطبيق متطابق مع حاوية جدول قائمة. قد تلاحظ أنه لا توجد أي تغييرات رمز على الإطلاق ، باستثناء سطر واحد في إنشاء الجدول. هذا هو السبب في أن QLIBC تغلف مؤشرات الوظيفة المقابلة داخل كائن الحاوية.
// create a linked-list-table. THE ONLY LINE YOU NEED TO CHANGE.
qlisttbl_t *tbl = qlisttbl(QLISTTBL_THREADSAFE);
// add an element which key name is "score".
int x = 12345;
tbl->put(tbl, "score", &x, sizeof(int));
// get the value of the element.
int *px = tbl->get(tbl, "score", NULL, true);
if(px != NULL) {
printf("%dn", *px);
free(px);
}
// release table
tbl->free(tbl);
نحن نبحث عن أشخاص يرغبون في العمل معًا لتطوير وتحسين QLIBC. حاليا ، لدينا مطالب عالية في المناطق التالية.
لقد ساعد الأشخاص التاليون في الاقتراحات أو الأفكار أو الكود أو إصلاح الأخطاء: (بالترتيب الأبجدي بالاسم الأول)
إذا نسينا اسمك أو أخطأنا في أخطاء أخطاء ، فيرجى إخبارنا بذلك.