دليل Abseil الشامل لـ C++: أمثلة واستخدامات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة عن Abseil: ما هي ولماذا تحتاجها

Abseil (تُنطق "أب-سيل") هي مكتبة مفتوحة المصدر للغة C++، تم تطويرها في Google. صُممت لتكملة المكتبة القياسية لـ C++ (STL) وتوفر مجموعة من المكونات عالية الجودة والمختبرة جيدًا والفعالة، والتي تُستخدم داخل Google لتطوير جميع مشاريع C++ تقريبًا.

لماذا تحتاج Abseil؟ الأسباب الرئيسية:

  • سد الفجوات في STL: المكتبة القياسية لـ C++ تتطور ببطء. تقدم Abseil حلولاً جاهزة للمشكلات الشائعة في الممارسة العملية والتي لم تدخل المعيار بعد (مثل التعامل مع النصوص، وأعلام سطر الأوامر، وجداول التجزئة).
  • أداء عالٍ: كود Abseil مُحسَّن للمعالجات والمُجمِّعات الحديثة. العديد من الخوارزميات تم تنفيذها مع مراعاة ذاكرة التخزين المؤقت وتعليمات SIMD.
  • الأمان والموثوقية: المكتبة تُستخدم بنشاط في بيئة الإنتاج في Google، مما يضمن استقرارها. جميع الدوال لديها فحص صارم للحدود والأنواع.
  • التوافق: تعمل Abseil مع جميع المُجمِّعات الرئيسية (GCC, Clang, MSVC) وأنظمة التشغيل (Linux, macOS, Windows).
  • النمطية: يمكنك استخدام المكونات التي تحتاجها فقط دون ربط المكتبة بأكملها.

تتكون Abseil من عدة وحدات رئيسية:

  • absl/strings: دوال متقدمة للتعامل مع النصوص (تقسيم، دمج، استبدال، تنسيق).
  • absl/container: حاويات إضافية (flat_hash_map, flat_hash_set, InlinedVector، وغيرها).
  • absl/flags: نظام قوي لمعالجة أعلام سطر الأوامر.
  • absl/time: التعامل مع الوقت والمناطق الزمنية.
  • absl/status: معالجة محسّنة للأخطاء (StatusOr, Status).
  • absl/algorithm: خوارزميات إضافية (contains, clamp، وغيرها).

تثبيت Abseil

على عكس Python أو JavaScript، لا يتم تثبيت مكتبات C++ عبر pip أو npm. يتم توزيع Abseil ككود مصدري يجب بناؤه باستخدام CMake أو Bazel. دعنا نلقي نظرة على الطريقة الأكثر شيوعًا: البناء عبر CMake.

التثبيت عبر vcpkg (موصى به لنظام Windows)

vcpkg هو مدير حزم لـ C++ من Microsoft.

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install abseil:x64-windows

التثبيت عبر Conan

Conan هو مدير حزم شائع آخر.

pip install conan
conan install abseil/20230801.0@

البناء اليدوي عبر CMake

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . --target install

الربط في ملف CMakeLists.txt

find_package(absl REQUIRED)
target_link_libraries(my_project
    absl::strings
    absl::flat_hash_map
    absl::flags
)

بداية سريعة: مثال كود

لنكتب برنامجًا بسيطًا يستخدم Abseil للتعامل مع النصوص وأعلام سطر الأوامر.

#include <iostream>
#include "absl/strings/str_join.h"
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"

ABSL_FLAG(std::string, name, "World", "الاسم للترحيب");

int main(int argc, char* argv[]) {
    absl::ParseCommandLine(argc, argv);

    std::vector<std::string> words = {"مرحبًا", absl::GetFlag(FLAGS_name), "!"};
    std::string greeting = absl::StrJoin(words, " ");

    std::cout << greeting << std::endl;
    return 0;
}

الترجمة والتشغيل:

g++ -std=c++17 main.cpp -labsl_strings -labsl_flags                    

توصيات