مكتبة C++ القياسية: نظرة شاملة وأمثلة برمجية

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

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

ابدأ الدورة

مكتبة C++ القياسية: نظرة شاملة



مكتبة C++ القياسية (غالباً ما تسمى STL — مكتبة القوالب القياسية) هي مجموعة قوية من الفئات والوظائف القالبية المضمنة في أي مترجم C++. وهي توفر حلولاً جاهزة ومختبرة ومحسّنة لأكثر مهام البرمجة شيوعاً: من العمل مع المصفوفات الديناميكية والسلاسل النصية إلى خوارزميات الفرز والبحث المعقدة. استخدام المكتبة القياسية يسرّع التطوير بشكل كبير، ويزيد من موثوقية الكود، ويسهل صيانته.



في هذه المقالة، سنقوم بتحليل المكونات الرئيسية لمكتبة C++ القياسية بالتفصيل: الحاويات، الخوارزميات، المكررات، السلاسل النصية، تدفقات الإدخال/الإخراج، والمؤشرات الذكية. سيكون كل قسم مصحوباً بأمثلة عملية للكود.



الحاويات (Containers)



الحاويات هي فئات مصممة لتخزين وتنظيم مجموعات البيانات. وهي تنقسم إلى ثلاث فئات رئيسية:



  • الحاويات التسلسلية: تخزن العناصر بترتيب خطي. الممثلون الرئيسيون: std::vector (مصفوفة ديناميكية)، std::list (قائمة مزدوجة الارتباط)، std::deque (طابور مزدوج النهاية).
  • الحاويات الترابطية: تخزن العناصر بترتيب مفروز، مما يوفر بحثاً سريعاً. أمثلة: std::set (مجموعة)، std::map (قاموس "مفتاح-قيمة").
  • الحاويات الترابطية غير المرتبة (C++11): تستخدم جداول التجزئة للوصول بشكل أسرع. أمثلة: std::unordered_set، std::unordered_map.


مثال على العمل مع std::vector و std::map:



#include <iostream>#include <vector>#include <map>#include <string>

int main() { // حاوية تسلسلية std::vector<int> numbers = {10, 20, 30, 40}; numbers.push_back(50); // إضافة في النهاية

std::cout << "المتجه: "; for (int n : numbers) { std::cout << n << " "; } std::cout << std::endl;

// حاوية ترابطية std::map<std::string, int> ages; ages["أليس"] = 30; ages["بوب"] = 25;

std::cout << "عمر أليس: " << ages["أليس"] << std::endl; return 0;}


المكررات (Iterators)



المكررات هي طريقة عامة للوصول إلى عناصر الحاوية. تعمل كمؤشرات ذكية وتسمح باجتياز أي حاويات بشكل موحد. الأنواع الرئيسية للمكررات: begin() (مؤشر على العنصر الأول) و end() (مؤشر على العنصر بعد الأخير).



مثال على استخدام مكرر لاجتياز std::list:



#include <iostream>#include <list>

int main() { std::list<double> prices = {19.99, 29.99, 9.99};

// استخدام المكرر for (auto it = prices.begin(); it != prices.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; return 0;}


الخوارزميات (Algorithms)



تحتوي مكتبة <algorithm> على عشرات الوظائف الجاهزة للعمل مع تسلسلات البيانات: الفرز، البحث، النسخ، التحويل، وغيرها الكثير. تعمل الخوارزميات مع المكررات، مما يجعلها عالمية.



الخوارزميات الشائعة:

  • std::sort — فرز نطاق.
  • std::find — البحث عن أول ظهور لقيمة.
  • std::copy — نسخ العناصر.
  • std::accumulate — جمع العناصر (من <numeric>).


مثال على الفرز والبحث:



#include <iostream>#include <vector>#include <algorithm>

int main() { std::vector<int> data = {5, 2, 8, 1, 9

توصيات