مكتبة C++ القياسية
في لغة البرمجة C++ ، تعد مكتبة C++ القياسية مجموعة من الفئات والوظائف المكتوبة باللغة الأساسية وهي جزء من معيار C++ ISO نفسه. [ 1 ]
ملخص
توفر مكتبة C++ القياسية العديد من الحاويات العامة، ووظائف لاستخدام هذه الحاويات ومعالجتها، وكائنات الدوال، والسلاسل النصية العامة، والتدفقات (بما في ذلك الإدخال/الإخراج التفاعلي والملفات)، ودعمًا لبعض ميزات اللغة، ووظائف للمهام الشائعة مثل إيجاد الجذر التربيعي لعدد. كما تتضمن مكتبة C++ القياسية معظم ملفات الرأس الخاصة بمكتبة ISO C القياسية التي تنتهي بـ " .h "، ولكن استخدامها كان مُهملًا (تم التراجع عن هذا الإهمال منذ C++23 [ 2 ] ). [ 3 ] بدلًا من ذلك، يعتبر C++23 هذه الملفات مفيدة للتوافق مع لغة C ، ويوصي بعدم استخدامها خارج البرامج المصممة لتكون برامج C وC++ صالحة. لا توجد ملفات رأس أخرى في مكتبة C++ القياسية تنتهي بـ " .h ". يتم تعريف ميزات مكتبة C++ القياسية ضمن مساحة الاسم .std
تعتمد مكتبة C++ القياسية على اصطلاحات مكتبة القوالب القياسية (STL)، وقد تأثرت بأبحاث البرمجة العامة ومطوري STL مثل ألكسندر ستيبانوف ومينغ لي. [ 4 ] [ 5 ] على الرغم من تشابه مكتبة C++ القياسية وSTL في العديد من الميزات، إلا أن أياً منهما لا يُعدّ مجموعة شاملة للأخرى. تصميم مكتبة C++ القياسية، كما هو الحال في مكتبة C القياسية، بسيط للغاية، ويحتوي فقط على الميزات الأساسية للبرمجة، ويفتقر إلى معظم الميزات المتخصصة التي توفرها مكتبة Java القياسية أو مكتبة C# القياسية . لمزيد من الميزات، يمكن استخدام بعض مكتبات الطرف الثالث مثل مكتبات Boost ومكتبات POCO C++ ، التي توفر ميزات إضافية، لتكملة المكتبة القياسية. يُوصف تطبيق رأس مكتبة C++ القياسية بأنه "مستقل" إذا لم يعتمد تنفيذ البرنامج على نظام تشغيل.
من السمات البارزة لمكتبة C++ القياسية أنها لا تقتصر على تحديد بنية ودلالات الخوارزميات العامة فحسب، بل تضع أيضًا متطلبات على أدائها. [ 6 ] غالبًا ما تتوافق متطلبات الأداء هذه مع خوارزمية معروفة، يُتوقع استخدامها ولكن ليس إلزاميًا. في معظم الحالات، يتطلب ذلك وقتًا خطيًا.أو الزمن الخطيلكن في بعض الحالات يُسمح بحدود أعلى، مثل الزمن شبه الخطيلفرز مستقر (للسماح بفرز الدمج في مكانه ). سابقًا، كان الفرز مطلوبًا فقط لأخذفي المتوسط، يسمح استخدام خوارزمية الفرز السريع (quicksort) ، وهي سريعة عمليًا ولكنها ذات أداء ضعيف في أسوأ الحالات. أما خوارزمية الفرز الداخلي (introsort) فقد طُرحت لتحقيق كلٍ من الأداء المتوسط السريع والتعقيد الأمثل في أسوأ الحالات، ومنذ إصدار C++11 ، يُضمن أن يكون الفرز خطيًا لوغاريتميًا في أسوأ الأحوال. في حالات أخرى، تظل المتطلبات أقل صرامة، مثل الاختيار (select )، الذي يُشترط فيه فقط أن يكون خطيًا في المتوسط (كما في خوارزمية الاختيار السريع quickselect )، [ 7 ] دون اشتراط أن يكون خطيًا في أسوأ الحالات كما في خوارزمية الفرز الداخلي introselect .
خضعت مكتبة C++ القياسية للتوحيد القياسي من قبل المنظمة الدولية للتوحيد القياسي (ISO) كجزء من جهود توحيد C++ ISO في التسعينيات. ومنذ عام 2011، تم توسيعها وتحديثها كل ثلاث سنوات [ 8 ] مع كل مراجعة لمعيار C++.
تحدد لغة C++20 إدخال وحدات رأس المكتبة القياسية، [ 9 ] وتضيف لغة C++23 دعمًا كاملاً للوحدات النمطية للمكتبة القياسية. [ 10 ]
التطبيقات
| اسم | منظمة | الصفحة الرئيسية | اختصار | رخصة | أحدث إصدار |
|---|---|---|---|---|---|
| مكتبة GNU C++ القياسية | مشروع جنو ومؤسسة البرمجيات الحرة | libstdc++ | استثناء مكتبة وقت تشغيل GCC مع رخصة GPLv3 | إصدار رئيسي جديد مرة واحدة في السنة | |
| مكتبة LLVM C++ القياسية | مجموعة مطوري LLVM | libc++ | رخصة أباتشي 2.0 مع استثناءات LLVM | كل أسبوعين | |
| مكتبة NVIDIA C++ القياسية | إنفيديا | libcudacxx | رخصة أباتشي 2.0 مع استثناءات LLVM | 4 سبتمبر 2024 ( 2024-09-04 ) | |
| مكتبة مايكروسوفت سي++ القياسية | مايكروسوفت | MSVC STL | رخصة أباتشي 2.0 مع استثناءات LLVM | يوميًا | |
| مكتبة HPX C++ القياسية للتوازي والتزامن | مجموعة ستيلار | HPX | رخصة برنامج Boost 1.0 | 29 يونيو 2025 ( 2025-06-29 ) | |
| مكتبة قوالب معايير الفنون الإلكترونية | إلكترونيك آرتس | شرق | رخصة بي إس دي ثلاثية البنود | 2 أكتوبر 2025 ( 2025-10-02 ) | |
| مكتبة دينكوم سي++ | دينكوموير | أُرشف بتاريخ ١١ فبراير ٢٠٢١ في أرشيف الإنترنت (Wayback Machine). | مجهول | تجاري | مجهول |
| مكتبة Cray C++ القياسية | مجموعة مستخدمي كراي | مجهول | تجاري | مجهول |
تم إيقاف إنتاجه
مكتبة أباتشي القياسية للغة سي++
مكتبة أباتشي القياسية للغة C++ هي تطبيق آخر مفتوح المصدر. طُوّرت في الأصل تجاريًا بواسطة شركة روغ ويف سوفتوير ، ثم تبرعت بها لاحقًا لمؤسسة برمجيات أباتشي . [ 11 ] ومع ذلك، بعد أكثر من خمس سنوات دون إصدار، قرر مجلس إدارة مؤسسة برمجيات أباتشي إنهاء هذا المشروع ونقله إلى أباتشي أتيك. [ 12 ]
انظر أيضاً
تُطبّق المكتبات التالية جزءًا كبيرًا من مكتبة C++ القياسية:
| اسم | الصفحة الرئيسية | وصف |
|---|---|---|
| النزول بالحبال | مجموعة مكتبات مفتوحة المصدر تستخدمها جوجل داخليًا | |
| حماقة | مجموعة متنوعة من مكتبات C++17 التي تستخدمها فيسبوك على نطاق واسع | |
| مكتبة دعم Bareflank | مكتبة C++ حيث يمكن تنفيذ كل شيء في وقت الترجمة |
تنظيم مساحة الاسم
تُوضع مكتبة C++ القياسية داخل stdمساحة الاسم. stdكانت مساحة الاسم تاريخيًا مسطحة (على عكس لغات أخرى مثل Java و C#، التي تقسم مكتباتها القياسية بشكل كبير على أسس تسمية هرمية)، ولكن منذ C++11 تم تقسيمها بشكل أكبر إلى مساحات أسماء فرعية داخلها:
std(المساحة الاسمية الرئيسية للمكتبة القياسية) [ 13 ]std::chrono(يحتوي على مرافق لمكتبة التاريخ والوقت) [ 14 ]std::contracts(يحتوي على مرافق للإبلاغ عن معلومات حول انتهاكات العقد) [ 15 ]std::execution(يحتوي على مكتبة التحكم في التنفيذ للتنفيذ غير المتزامن، بما في ذلكtask<T>) [ 16 ]std::execution::system_context_replaceability(يسمح باستبدال التنفيذ الافتراضي للمجدول المتوازي) [ 17 ]
std::filesystem(يحتوي على مرافق للعمل مع معالجة نظام الملفات، بما في ذلكdirectory_entry،pathإلخ.) [ 18 ]std::linalg(يحتوي على مرافق للجبر الخطي) [ 19 ]std::literals(مساحة اسم مضمنة تحتوي على عوامل تشغيل مختلفة لإنشاء قيم حرفية لكائن) [ 20 ]std::literals::chrono_literals(مساحة اسم مضمنة تحتوي على عوامل تشغيل مختلفة لإنشاء قيم حرفية لكائنات المدة) [ 21 ]std::literals::complex_literals(مساحة اسم مضمنة تحتوي على عوامل تشغيل مختلفة لإنشاء قيم حرفية للأعداد التخيلية) [ 22 ]std::literals::string_literals(مساحة اسم مضمنة تحتوي على عوامل تشغيل مختلفة لإنشاء قيم حرفية لكائنات السلسلة) [ 23 ]std::literals::string_view_literals(مساحة اسم مضمنة تحتوي على عوامل تشغيل مختلفة لإنشاء قيم حرفية لكائنات عرض السلسلة) [ 24 ]
std::meta(يحتوي على تسهيلات للانعكاس الثابت (وقت الترجمة) معinfoالنوع الذي يمثل بيانات تعريف الانعكاس)std::numbers(يحتوي على جميع الثوابت العددية، مثلpi،e، إلخ.) [ 25 ]std::placeholders(يحتوي على جميع كائنات العناصر النائبة_1،_2...، حتى الحد الأقصى المحدد من قبل التنفيذ_N) [ 26 ]std::pmr(يحتوي على رموز لموارد الذاكرة متعددة الأشكال، لتخصيص مرن يتم تكوينه في وقت التشغيل، بالإضافة إلى إصدارات من أنواع المكتبة القياسية التي تستخدمpolymorphic_allocatorكمخصص) [ 27 ]std::ranges(يحتوي على رموز للعمل على نطاقات، والتي توسع مكتبات الخوارزمية/المكرر) [ 28 ]std::ranges::views(يحتوي على رموز لمحولات النطاق لإنشاء طرق العرض، لمعالجة المجموعات الكسولة بدون نسخ؛ يُعرف أيضًا باسمstd::views) [ 29 ]
std::regex_constants(يحتوي على ثوابت تخصيص التعبيرات النمطية المختلفة، مثلECMAScript،awk،grep، إلخ.) [ 30 ]std::rel_ops(يحتوي على عوامل مقارنة تم إنشاؤها تلقائيًا، تم إهمالها منذ C++20) [ 31 ]std::this_thread(يحتوي على مرافق لمعالجة الخيط الحالي) [ 32 ]
يوجد أيضًا std::experimentalنطاق أسماء، مع نطاقات أسماء فرعية أخرى، std::experimental::*لميزات المواصفات الفنية/المعيارية المختلفة التي قد يتم تنفيذها بواسطة بعض موردي المترجمات. [ 33 ]
مساحة posixالاسم محجوزة، على الأرجح لاستخدام واجهات برمجة تطبيقات POSIX ، ولكنها غير مستخدمة حاليًا. المعرفات التي تبدأ بشرطتين سفليتين، أو بشرطة سفلية واحدة متبوعة مباشرة بحرف كبير، محجوزة بموجب المعيار. بالإضافة إلى ذلك، فإن مساحتي الاسم stdو posixمحجوزتان، وإضافة التصريحات/التعريفات إلى أي من هاتين المساحتين (أو مساحات الأسماء المتداخلة داخلهما) يُعد سلوكًا غير مُعرَّف ، مع بعض الاستثناءات (مثل و std::hash<>) std::formatter<>). [ 34 ]
الوحدات النمطية القياسية
على الرغم من أن الوحدات النمطية ظهرت لأول مرة في C++20 ، إلا أن وحدات المكتبة القياسية لم تُعتمد كجزء من اللغة إلا في C++23 . قبل ذلك، كانت وحدات رأس المكتبة القياسية مُحددة لـ C++20، لكن معظم مُصنّعي المُترجمات يدعمون نقل وحدات المكتبة القياسية إلى C++20. أُضيفت هذه الوحدات النمطية المُسماة لتشمل جميع العناصر المُعلنة في كلٍ من النطاقات العامة ومساحات الأسماء التي توفرها رؤوس البيانات القياسية القابلة للاستيراد. لا يُسمح بتصدير وحدات الماكرو، لذا يتعين على المستخدمين تضمين أو استيراد رؤوس البيانات التي تُصدر وحدات الماكرو يدويًا لاستخدامها، أو يمكن تصديرها كثوابت وقت الترجمة.std
يحتوي معيار C++ على stdأسماء std.*وحدات محجوزة، [ 35 ] ومع ذلك، تسمح معظم المترجمات باستخدام علامة لتجاوز ذلك. [ 36 ]
وحدات المكتبة القياسية هي:
| اسم | منذ | وصف |
|---|---|---|
std | C++23 [ أ ] | يقوم بتصدير جميع التصريحات في مساحة الاسم stdووظائف تخصيص وإلغاء تخصيص التخزين العام التي توفرها رؤوس مكتبة C++ القابلة للاستيراد بما في ذلك مرافق مكتبة C (على الرغم من التصريح عنها في مساحة الاسم القياسية). |
std.compat | C++23 [ أ ] | يُصدّر هذا البرنامج نفس التصريحات التي يُصدّرها البرنامج المُسمى std، بالإضافة إلى تصدير الدوال في النطاق العام ضمن إمكانيات مكتبة لغة C. ولذلك، يحتوي اسمه على كلمة "compat" التي تعني التوافق مع لغة C. |
std.compatلا يُعدّ هذا الموديول وحدةً فرعيةً من الموديول std، ولكنه سُمّي كذلك للدلالة على ارتباطه بالموديول std(باعتباره نسخةً "متوافقةً" منه). على الرغم من وجود موديول واحد فقط للمكتبة القياسية بأكملها، فقد اقتُرح إضافة موديولات أخرى تُوفّر مجموعات فرعية أخرى من المكتبة القياسية. [ 38 ] [ 39 ]
رؤوس قياسية
تحتوي الملفات التالية على تعريفات مكتبة C++ القياسية.
مفتاح الرموز: : مهمل : تمت إزالته
عام
المكونات التي قد تستخدمها برامج C++ لزيادة الميزات.
| اسم | منذ | وصف |
|---|---|---|
<any> | C++17 | يوفر فئة تم مسح نوعها any. |
<cerrno> | C++98 | متعلق بـ <errno.h>. لاختبار رموز الخطأ التي تُبلغ عنها وظائف المكتبة. |
<chrono> | C++11 | يُوفر عناصر زمنية، مثل durationالوقت time_pointوالساعات. ومنذ إصدار C++20 ، أُضيفت ميزات زمنية إضافية، بما في ذلك التقاويم والمناطق الزمنية والمزيد من الساعات وتنسيق الوقت. |
<concepts> | C++20 | يقدم مفاهيم أساسية في مجال المكتبات . |
<contracts> | C++26 | يوفر ميزات التصميم التعاقدي . |
<csetjmp> | C++98 | يتعلق بـ <setjmp.h>. يعلن عن وحدات الماكرو setjmpو longjmp، والتي تستخدم للخروج غير المحلي. |
<csignal> | C++98 | متعلق بـ <signal.h>. يحدد وظائف معالجة الإشارات . |
<cstdalign> | C++98 | متعلق بـ . للاستعلام عن محاذاة الكائنات <stdalign.h>وتحديدها . تم إهماله في C++17 ، وتمت إزالته في C++20 . |
<cstdbool> | C++98 | مرتبط بـ <stdbool.h>. يُعرّف نوع بيانات منطقي . تم إهماله في C++17 ، وتمت إزالته في C++20 . |
<cstddef> | C++98 | يتعلق بـ <stddef.h>. يُعرّف العديد من الأنواع والوحدات البرمجية المفيدة . |
<cstdint> | C++98 | متعلق بـ <stdint.h>. يُعرّف أنواع الأعداد الصحيحة ذات العرض المحدد . |
<ctime> | C++98 | يتعلق بـ <time.h>. يحدد وظائف معالجة التاريخ والوقت . |
<debugging> | C++26 | يقدم مفاهيم أساسية في مجال المكتبات . |
<expected> | C++23 | يوفر قالب فئة expected، ونوع نتيجة . |
<functional> | C++98 | يوفر العديد من كائنات الوظائف ، المصممة للاستخدام مع الخوارزميات القياسية. |
<generator> | C++23 | يوفر مولدًا للروتينات الفرعية يدعم أيضًا عمليات العائد المتداخلة على النطاقات. |
<memory> | C++98 | يوفر تسهيلات لإدارة الذاكرة في لغة C++، بما في ذلك قالب الفئة unique_ptr. |
<memory_resource> | C++17 | يوفر هذا النظام إمكانيات لإنشاء مُخصِّصات ذاكرة متعددة الأشكال يمكن أن تتغير سلوكياتها أثناء وقت التشغيل. [ 40 ] |
<optional> | C++17 | يوفر قالب فئة optional، وهو نوع اختياري . |
<scoped_allocator> | C++11 | يوفر scoped_allocator_adaptor. |
<stacktrace> | C++23 | يوفر عمليات تتبع المكدس . |
<stdexcept> | C++98 | يحتوي على فئات استثناء قياسية مثل logic_errorو runtime_error. |
<system_error> | C++11 | يحدد خصائص error_codeوميزات استخداماته. |
<tuple> | C++11 | يوفر قالب فئة tuple، وزوجًا مرتبًا . |
<type_traits> | C++11 | يوفر إمكانيات البرمجة الوصفية للعمل مع الأنواع. |
<utility> | C++98 | يُوفّر ملف الأدوات المساعدة العديد من الأدوات: قوالب الفئات ( الصفوف الثنائيةpair ) ، وتسلسلات الأعداد الصحيحة في وقت الترجمة، ومساعدات في إنشاء أنواع المفردات، ووظائف مثل و ، وغيرها الكثير. وقد تم إيقاف استخدام مساحة الاسم الخاصة بالتوليد التلقائي لعوامل المقارنة في C++20 لصالح عوامل مقارنة افتراضية جديدة.moveforwardstd::rel_ops |
<variant> | C++17 | يوفر قالب فئة variant، ونوع اتحاد موسوم . |
الدعم اللغوي
المكونات التي قد تستخدمها برامج C++ للدعم أثناء التطوير.
| اسم | منذ | وصف |
|---|---|---|
<cassert> | C++98 | يتعلق بـ <assert.h>. يعلن عن ماكرو التأكيد ، المستخدم للمساعدة في اكتشاف الأخطاء المنطقية وأنواع أخرى من الأخطاء أثناء تصحيح البرنامج. |
<cfenv> | C++98 | يتعلق بـ <errno.h>. يحدد مجموعة من الوظائف للتحكم في بيئة الفاصلة العائمة . |
<cfloat> | C++98 | يتعلق بـ <float.h>. يحدد ثوابت الماكرو التي تحدد خصائص مكتبة الفاصلة العائمة الخاصة بالتنفيذ . |
<cinttypes> | C++98 | متعلق بـ <inttypes.h>. يُعرّف أنواع الأعداد الصحيحة ذات العرض المحدد . |
<ciso646> | C++98 | مرتبط بـ <iso646.h>. يُعرّف عدة وحدات ماكرو تُنفّذ طرقًا بديلة للتعبير عن العديد من الرموز القياسية. للبرمجة باستخدام مجموعات الأحرف المتغيرة ISO 646. أُزيل في C++20 . |
<climits> | C++98 | يتعلق بـ <limits.h>. يحدد ثوابت الماكرو التي تحدد خصائص أنواع الأعداد الصحيحة الخاصة بالتنفيذ. |
<compare> | C++20 | يوفر دعمًا للمشغلين لإجراء مقارنة ثلاثية الاتجاهات . |
<coroutine> | C++20 | يوفر دعمًا للروتينات الفرعية . |
<debugging> | C++26 | يوفر دعمًا لتصحيح الأخطاء ، مثل نقاط التوقف وآليات أخرى لمساعدة مصححي الأخطاء. |
<exception> | C++98 | يوفر العديد من الأنواع والوظائف المتعلقة بمعالجة الاستثناءات ، بما في ذلك exceptionالفئة الأساسية لجميع الاستثناءات التي تطرحها المكتبة القياسية. |
<initializer_list> | C++11 | يوفر دعمًا لمنشئ قائمة التهيئة من خلال initializer_list. |
<limits> | C++98 | يوفر قالب الفئة numeric_limits، المستخدم لوصف خصائص الأنواع العددية الأساسية. |
<meta> | C++26 | يوفر إمكانيات البرمجة الانعكاسية بالإضافة إلى بيانات تعريف الرموز والتعليقات التوضيحية. |
<new> | C++98 | يوفر عوامل التشغيل newووظائف deleteوأنواع أخرى لتخصيص المواضع . |
<source_location> | C++20 | يوفر معلومات عن موقع المصدر. |
<stdfloat> | C++23 | يوفر دعمًا مشروطًا لأنواع الفاصلة العائمة الموسعة. |
<typeinfo> | C++98 | يوفر تسهيلات للعمل مع معلومات نوع وقت التشغيل في لغة C++ . |
<version> | C++20 | يوفر معلومات من خلال وحدات الماكرو حول تطبيق الموفر لميزات اللغة والمكتبة القياسية. [ 41 ] |
حاويات/مجموعات
المكونات التي قد تستخدمها برامج C++ لهياكل بيانات الحاويات .
| اسم | منذ | وصف |
|---|---|---|
<array> | C++11 | يوفر قالب فئة الحاوية array، وهو عبارة عن حاوية لمصفوفة ذات حجم ثابت. |
<bitset> | C++98 | يوفر فئة الحاوية المتخصصة ، وهي عبارة عن مصفوفة بتbitset ذات حجم ثابت . |
<deque> | C++98 | يوفر قالب فئة الحاوية deque، وهو عبارة عن قائمة انتظار مزدوجة النهاية . |
<flat_map> | C++23 | يوفر قوالب فئة محول الحاوية flat_mapو flat_multimap. |
<flat_set> | C++23 | يوفر قوالب فئة محول الحاوية flat_setو flat_multiset. |
<forward_list> | C++11 | يوفر قالب فئة الحاوية forward_list، وهو عبارة عن قائمة مرتبطة بشكل فردي . |
<inplace_vector> | C++26 | يوفر الفئة inplace_vector، على غرار vectorالفئة ذات السعة الثابتة المحددة في وقت الترجمة. |
<hive> | C++26 | يوفر هذا الصنف hiveالذي يعيد استخدام ذاكرة العناصر المحذوفة |
<map> | C++98 | يوفر قوالب فئة الحاوية map، والمصفوفة الترابطيةmultimap المرتبة، والخريطة المتعددة . |
<mdspan> | C++23 | يوفر قالب الفئة mdspan، وهو مشابه لـ spanولكن لعرض متعدد الأبعاد. |
<queue> | C++98 | يوفر فئة محول الحاوية ، وقائمة انتظارqueue أحادية الطرف ، وقائمة انتظار ذات أولوية .priority_queue |
<set> | C++98 | يوفر قوالب فئة الحاوية set، والحاويات أو المجموعاتmultiset الترابطية المصنفة . |
<span> | C++20 | يوفر قالب الفئة span، وهو عرض غير مالك يشير إلى أي نطاق متجاور. |
<stack> | C++98 | يوفر فئة محول الحاوية stack، وهي عبارة عن مكدس . |
<unordered_map> | C++11 | يوفر قالب فئة الحاوية unordered_mapوجداول unordered_multimapالتجزئة . |
<unordered_set> | C++11 | يوفر قالب فئة الحاوية unordered_setو unordered_multiset. |
<vector> | C++98 | يوفر قالب فئة الحاوية vector، وهو عبارة عن مصفوفة ديناميكية . |
المكررات والنطاقات
المكونات التي قد تستخدمها برامج C++ لمعالجة المكررات والنطاقات والخوارزميات على النطاقات والحاويات.
| اسم | منذ | وصف |
|---|---|---|
<algorithm> | C++98 | يوفر تعريفات للعديد من الخوارزميات لاستخدامها مع الحاويات والنطاقات الأخرى. |
<execution> | C++17 | يوفر سياسات تنفيذ للخوارزميات المتوازية. تم توسيعه في C++26 بإطار عمل للتحكم في التنفيذ للعمليات والمهام غير المتزامنة. |
<iterator> | C++98 | يوفر هذا البرنامج فئات وقوالب للعمل مع المكررات . |
<numeric> | C++98 | الخوارزميات العددية المعممة. |
<ranges> | C++20 | يوفر نطاقات من المرافق ومحولات تم تقييمها بشكل متكاسل. |
التوطين
المكونات التي قد تستخدمها برامج C++ للترجمة ومعالجة ترميز الأحرف.
| اسم | منذ | وصف |
|---|---|---|
<clocale> | C++98 | متعلق بـ <locale.h>. يحدد وظائف تحديد الموقع . |
<codecvt> | C++11 | يوفر هذا البرنامج ميزات لتحويل الترميز لمختلف ترميزات الأحرف. تم إيقاف استخدامه منذ C++17 ، وتمت إزالته في C++26 . |
<locale> | C++98 | يُعرّف الفئات ويُعلن عن الوظائف التي تغلف وتعالج المعلومات الخاصة بموقع معين . |
<text_encoding> | C++26 | يوفر تعريفات ترميز النصوص مع سجل مجموعات الأحرف التابع لهيئة الأرقام المخصصة للإنترنت (IANA). |
الأوتار
المكونات التي قد تستخدمها برامج C++ لمعالجة السلاسل النصية.
| اسم | منذ | وصف |
|---|---|---|
<cctype> | C++98 | يتعلق بـ <ctype.h>. يحدد مجموعة من الوظائف المستخدمة لتصنيف الأحرف حسب أنواعها أو للتحويل بين الأحرف الكبيرة والصغيرة بطريقة مستقلة عن مجموعة الأحرف المستخدمة (عادة ASCII أو أحد امتداداتها، على الرغم من أن التطبيقات التي تستخدم EBCDIC معروفة أيضًا). |
<charconv> | C++17 | يوفر أدوات تحويل السلاسل النصية المستقلة عن اللغة، وغير المخصصة للذاكرة، وغير المسببة للأخطاء من/إلى الأعداد الصحيحة والأعداد العشرية. |
<cstring> | C++98 | متعلق بـ <string.h>. يُعرّف وظائف معالجة السلاسل النصية . |
<cuchar> | C++98 | متعلق بـ <uchar.h>: أنواع ووظائف لمعالجة أحرف يونيكود . |
<cwchar> | C++98 | متعلق بـ <wchar.h>. يحدد وظائف معالجة السلاسل العريضة . |
<cwctype> | C++98 | يتعلق بـ <wctype.h>. يحدد مجموعة من الوظائف المستخدمة لتصنيف الأحرف العريضة حسب أنواعها أو للتحويل بين الأحرف الكبيرة والصغيرة. |
<format> | C++20 | يوفر أدوات تنسيق النصوص. |
<string> | C++98 | stringيوفر الفئات والقوالب القياسية للغة C++ . |
<string_view> | C++17 | يوفر string_viewفئات تمثل عرضًا غير قابل للتغيير وغير مالك لأي سلسلة نصية. |
<regex> | C++11 | يوفر أدوات مساعدة لمطابقة الأنماط في السلاسل النصية باستخدام التعبيرات النمطية . |
التدفقات والملفات والمدخلات/المخرجات
المكونات التي قد تستخدمها برامج C++ لمعالجة المدخلات/المخرجات ومعالجة الملفات.
| اسم | منذ | وصف |
|---|---|---|
<cstdio> | C++98 | يتعلق بـ <stdio.h>. يحدد وظائف الإدخال والإخراج الأساسية . |
<filesystem> | C++17 | يوفر تسهيلات لعمليات نظام الملفات ومكوناتها. |
<fstream> | C++98 | يوفر هذا البرنامج إمكانيات الإدخال والإخراج عبر الملفات. انظر fstream . |
<iomanip> | C++98 | يوفر تسهيلات لمعالجة تنسيق الإخراج، مثل الأساس المستخدم عند تنسيق الأعداد الصحيحة ودقة قيم الفاصلة العائمة . |
<ios> | C++98 | يوفر عدة أنواع ووظائف أساسية لتشغيل iostreams. |
<iosfwd> | C++98 | يوفر هذا البرنامج تعريفات مسبقة للعديد من قوالب الفئات المتعلقة بالإدخال/الإخراج. |
<iostream> | C++98 | يُقدّم هذا البرنامج أساسيات الإدخال والإخراج في لغة C++. انظر iostream . |
<istream> | C++98 | يوفر istreamفئات داعمة أخرى للإدخال. |
<ostream> | C++98 | يوفر ostreamفئات داعمة أخرى للإخراج. |
<print> | C++23 | يوفر أدوات إخراج منسقة مثل تلك printالمدعومة لكل من تدفقات C و C++. |
<spanstream> | C++23 | يوفر spanstreamتدفقات إدخال/إخراج ثابتة أخرى للأحرف. |
<sstream> | C++98 | يوفر stringstreamفئات داعمة أخرى لمعالجة السلاسل النصية. |
<streambuf> | C++98 | يوفر وظائف القراءة والكتابة من وإلى أنواع معينة من تسلسلات الأحرف، مثل الملفات الخارجية أو السلاسل النصية. |
<strstream> | C++98 | يوفر عمليات الإدخال/الإخراج على التدفقات المدعومة بالمصفوفات. تم إيقاف استخدامه في C++98 ، وتمت إزالته في C++26 . |
<syncstream> | C++20 | يوفر osyncstreamفئات داعمة أخرى لتدفقات الإخراج المتزامنة. |
مكتبة دعم الخيوط
المكونات التي قد تستخدمها برامج C++ للبرمجة المتزامنة والترابطية.
| اسم | منذ | وصف |
|---|---|---|
<atomic> | C++11 | يوفر قالب الفئة atomic، والعديد من تخصصات القوالب، والمزيد من العمليات الذرية . |
<barrier> | C++20 | يوفر حاجزًا خيطيًاbarrier قابلًا لإعادة الاستخدام . |
<cstdarg> | C++98 | متعلق بـ <stdarg.h>. لإجراء عمليات ذرية على البيانات المشتركة بين الخيوط. |
<future> | C++11 | يوفر مكونات يمكن لبرنامج C++ استخدامها لاسترداد النتيجة (القيمة أو الاستثناء) من دالة تم تشغيلها في نفس سلسلة العمليات أو سلسلة عمليات أخرى، مثل future. |
<hazard_pointer> | C++26 | يوفر مؤشرات للمخاطر عبر hazard_pointer. |
<latch> | C++20 | يوفر latchحاجزًا خيطيًا للاستخدام لمرة واحدة. |
<mutex> | C++11 | يوفر آليات للاستبعاد المتبادل : الأقفال المتبادلة، والأقفال، و call_once... |
<rcu> | C++26 | يوفر آليات القراءة والنسخ والتحديث لاستعادة البيانات بشكل آمن. |
<shared_mutex> | C++14 | يوفر إمكانية الاستبعاد المتبادل المشترك. |
<semaphore> | C++20 | يوفر أدوات الإشارات الثنائية لعدد الموارد غير السالب. |
<stop_token> | C++20 | يوفر مكونات يمكن استخدامها لطلب إيقاف تنفيذ عملية ما بشكل غير متزامن وفي الوقت المناسب. |
<thread> | C++11 | يُوفّر هذا الصنف threadإمكانية التعامل مع الخيوط . وقد تم توسيعه لاحقًا في C++20 ليشمل خاصية الانضمامjthread التلقائي عند التدمير. كما يحتوي على مساحة اسم للعمليات التي تُجرى على الخيط قيد التنفيذ حاليًا.std::this_thread |
مكتبة الأرقام
المكونات التي قد تستخدمها برامج C++ لإجراء عمليات شبه عددية أو رياضية.
| اسم | وصف | |
|---|---|---|
<bit> | C++20 | يوفر إمكانيات معالجة البتات. |
<ccomplex> | C++98 | متعلق بـ <complex.h>. يُعرّف مجموعة من الدوال لمعالجة الأعداد المركبة . تم إهماله في C++17 ، وتمت إزالته في C++20 . |
<cmath> | C++98 | يتعلق بـ <math.h>. يُعرّف الدوال الرياضية الشائعة . يمتد إلى <math.h>، ويحتوي على دوال رياضية خاصة مثل دوال بيسل ودالة زيتا لريمان . |
<complex> | C++98 | يُعرّف قالب فئة complex، والعديد من الوظائف لتمثيل ومعالجة الأعداد المركبة. |
<ctgmath> | C++98 | مرتبط بـ <tgmath.h>. يُعرّف الدوال الرياضية العامة للأنواع . تم إهماله في C++17 ، وتمت إزالته في C++20 . |
<linalg> | C++26 | يوفر مرافق الجبر الخطي . |
<numbers> | C++20 | يوفر الثوابت الرياضية المعرفة في مساحة الاسم std::numbers. |
<simd> | C++26 | يوفر أنواع البيانات المتوازية ( تعليمات مفردة، بيانات متعددة أو SIMD) والعمليات على هذه الأنواع. |
<random> | C++11 | مرفق لتوليد الأرقام والتوزيعات (شبه) العشوائية. |
<ratio> | C++11 | يوفر عمليات حسابية نسبية في وقت الترجمة تعتمد على قوالب الفئات. |
<valarray> | C++98 | يحدد خمسة قوالب فئات ( valarray، slice_array، ، gslice_array، mask_arrayو indirect_array)، وفئتين ( sliceو gslice)، وسلسلة من قوالب الوظائف ذات الصلة لتمثيل ومعالجة مصفوفات القيم. |
مكتبة C القياسية
يُضمَّن كل ملف رأس من مكتبة C القياسية في مكتبة C++ القياسية باسم مختلف، يُنشأ بحذف امتداد الملف ' .h ' وإضافة ' c ' في البداية؛ على سبيل المثال، يصبح ' ' هو ' '. الفرق الوحيد بين هذه الملفات الرأسية وملفات مكتبة C القياسية التقليدية هو أنه يُفضَّل، حيثما أمكن، وضع الدوال في مساحة الاسم. في معيار ISO C، يُسمح بتنفيذ الدوال الموجودة في المكتبة القياسية باستخدام وحدات الماكرو ، وهو أمر غير مسموح به في معيار ISO C++.time.hctimestd::
تم إيقاف استخدام رؤوس C ذات امتداد الملف ' .h ' في C++98، ولكن تم إلغاء إيقاف استخدامها لاحقًا في C++23 لأغراض التوافق؛ ومع ذلك، لا يزال استخدامها غير مستحب بالنسبة لرمز C++ النقي.
الرؤوس التالية هي رؤوس توافق خاصة بلغة C والتي ليس لها اصطلاح تسمية مطابق بلغة C++، مما يعني أنه يجب استخدام رؤوس C إذا كانت الرؤوس ضرورية.
| اسم | منذ | وصف |
|---|---|---|
<stdatomic.h> | C++23 | لإجراء عمليات ذرية على البيانات المشتركة بين الخيوط. |
<stdbit.h> | C++26 | لمعالجة ومعالجة البتات وتسلسلات البتات. |
<stdchkint.h> | C++26 | للأعداد الصحيحة التي تم التحقق منها. |
<stdcountof.h> | C++26 | لتحديد طول مصفوفة C. |
لا يوجد ما يعادل ملفات الرأس C <stdnoreturn.h>في <threads.h>لغة C++، كما أن ملفات الرأس C الخاصة بها غير مدعومة في لغة C++.
لا توفر لغة C++ مكتبة C POSIX كجزء من أي معيار، ومع ذلك، يُسمح باستخدامها في برامج C++. عند استخدامها في C++، لا تُسبق أسماء ملفات POSIX بالحرف " c "، وتحتوي جميعها على اللاحقة ".h " . عادةً ما يكون لمعظم ملفات POSIX تطبيق مكافئ في C++، مثل بدلاً من .<regex><regex.h>
مكتبة TS للشبكات
تُعرَّف الترويسات التالية في مواصفات تسلسل الشبكات بلغة C++، والتي تعتمد بدورها على boost::asioمكتبة Boost ، وهي مكتبة غير موحدة في C++ حتى الآن. [ 42 ] مع ذلك، توفرها بعض الشركات، مثل GCC . [ 43 ] توضع الرموز في std::extensions::net...
| اسم | وصف |
|---|---|
<netfwd> | يحتوي على تعريفات مسبقة لمكونات Networking TS. |
<executor> | يوفر نماذج غير متزامنة للشبكات. |
<io_context> | يوفر خدمات الإدخال/الإخراج الأساسية للشبكات. |
<timer> | يوفر عمليات المؤقت للشبكات. |
<buffer> | يوفر مخازن مؤقتة وتدفقات موجهة نحو المخازن المؤقتة للشبكات. |
<socket> | يوفر المقابس وتدفقات المقابس للشبكات. |
<internet> | يوفر بروتوكولات الإنترنت للشبكات. |
<net> | يشمل جميع رؤوس TS الخاصة بالشبكات. |
انظر أيضاً
ملحوظات
مراجع
- ↑ ISO/IEC 14882:2003(E) لغات البرمجة – C++ §17-27
- ↑ كوبي، توماس (11 يونيو 2021). "توضيح حالة "رؤوس C"" .
- ↑ ISO/IEC 14882:2003(E) لغات البرمجة – C++ §D.5
- ↑ ستروستروب، بيارن (1994). تصميم وتطور لغة C++، القسم 8.5 . أديسون ويسلي. ISBN 0-201-54330-3.
- ↑ ستيبانوف، ألكسندر؛ لي، مينغ (1 أغسطس 1994). "مكتبة القوالب القياسية" . مختبرات إتش بي. مؤرشف من الأصل في 9 نوفمبر 1997. تم الاطلاع عليه في 22 أكتوبر 2017 .
- ↑ " الخوارزميات العامة مؤرشفة في 3 يونيو 2023 على موقع Wayback Machine "، ديفيد موسر
- ↑ "std::nth_element" . cppreference.com. مؤرشف من الأصل بتاريخ 29 مارس 2018. تم الاطلاع عليه بتاريخ 20 مارس 2018 .
- ↑ " تم أرشفة جدول C++ IS في 5 مايو 2024 على موقع Wayback Machine "، هيرب ساتر
- ↑ ريتشارد سميث (18 يوليو 2019). "وحدات رأس المكتبة القياسية للغة C++20" . open-std.org . WG21.
- ↑ ستيفان ت. لافافيج، غابرييل دوس ريس، بيارن ستروستروب، جوناثان ويكلي (11 مارس 2022). "وحدات المكتبة القياسية std و std.compat" (ملف PDF) . open-std.org . WG21.
{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - ↑ "مكتبة أباتشي سي++ القياسية" . مؤرشفة من الأصل في 8 أبريل 2023. تم الاطلاع عليها في 20 سبتمبر 2019 .
- ↑ بورتر، بريت (18 يوليو 2013). "مكتبة أباتشي سي++ القياسية والعُلّية" . القائمة البريدية stdcxx-dev. مؤرشف من الأصل في 23 يوليو 2013. تم الاطلاع عليه في 27 فبراير 2014 .
- ↑ cppreference.com. "مؤشر الرموز القياسي" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::chrono Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::contracts Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::execution Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ^ لوسيان رادو تيودوريسكو، رسلان أروتيونيان، لي هاوز، مايكل فوس (25 يونيو 2025). "جدولة موازية" . open-std.org . WG21.
{{cite web}}: صيانة CS1: أسماء متعددة: قائمة المؤلفين ( رابط ) - ↑ cppreference.com. "std::filesystem Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::linalg Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::literals Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::literals::chrono_literals Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::literals::complex_literals Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::literals::string_literals Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::literals::string_view_literals Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::numbers Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::placeholders Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::pmr Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::ranges Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::ranges::views Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::regex_constants Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::rel_ops Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "std::this_thread Symbol Index" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com. "رؤوس مكتبة C++ القياسية التجريبية" . cppreference.com . cppreference.com . تم الاطلاع عليه بتاريخ 29 مارس 2026 .
- ↑ cppreference.com (12 يوليو 2026). "توسيع نطاق الاسم std" . cppreference.com . cppreference.com.
- ↑ لجنة معايير لغة C++. (2022). P2465R3 - وحدات C++: التصميم والتطوير . تم استرجاعها من https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2465r3.pdf مؤرشفة في 18 نوفمبر 2022 على موقع Wayback Machine
- ↑ "وحدات C++ القياسية" .
- ↑ ستيفان ت. لافافيج (24 فبراير 2021). "وحدات رأسية ووحدات نمطية للمكتبة القياسية - تتبع المشكلة رقم 1694" . github.com . شركة مايكروسوفت.
- ↑ لجنة معايير لغة C++. (2018). P0581R1 - وحدات لغة C++ . تم استرجاعها من https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0581r1.pdf
- ↑ لجنة معايير لغة C++. (2021). P2412R0 - تحسينات إضافية على تصميم وحدات C++ . تم استرجاعه من https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2412r0.pdf مؤرشف في 20 نوفمبر 2024 على موقع Wayback Machine
- ↑ فيليبك، بارتلومي. "المخصصات متعددة الأشكال، نمو std::vector والاختراق" . مؤرشف من الأصل في 29 يونيو 2020. تم الاسترجاع في 30 أبريل 2021 .
- ↑ "مسودة عمل، معيار للغة البرمجة C++" (ملف PDF) . open-std.org . ISO/IEC. 1 أبريل 2020. ص 492. مؤرشف (ملف PDF) من الأصل في 27 أبريل 2020. تم الاطلاع عليه في 30 أبريل 2021 .
- ↑ cppreference.com (3 فبراير 2026). "إضافات للشبكات" . cppreference.com . cppreference.com.
- ↑ مايكل لارابيل (13 أكتوبر 2018). "إصدار GCC9 الأولي لتطبيقات الشبكات بلغة C++" . phoronix.com . Phoronix.
للمزيد من القراءة
- ستروستروب، بيارن (2013). لغة البرمجة سي++ . أديسون-ويسلي . ISBN 978-0321563842.
- جوسوتيس، نيكولاي (2012). مكتبة C++ القياسية - دليل تعليمي ومرجع . أديسون-ويسلي . ISBN 978-0-321-62321-8.
- فان ويرت، بيتر؛ جريجوري ، مارك (14 يونيو 2016). مرجع سريع لمكتبة C++ القياسية . أبريس . رقم ISBN 978-1484218754أُرشف من الأصل في 16 مايو 2021. تم الاطلاع عليه في 24 مارس 2017 .
روابط خارجية
- مرجع مكتبة C++ القياسية
- مرجع مكتبة مايكروسوفت سي++ القياسية
- وثائق Rogue Wave SourcePro C++
- ويكي مكتبة أباتشي سي++ القياسية ، تم إيقافها في 15 مايو 2014 (استنادًا إلى مكتبة روغ ويف سي++ القياسية 4.1.0)
- توثيق مكتبة STLport القياسية للغة C++
- الوثائق الإلكترونية لمكتبة GNU C++
- توثيق مكتبة LLVM/Clang C++ القياسية
- مكتبة C++ القياسية
