المتجه هو هيكل بيانات يخزن عدة عناصر من نفس النوع.المتجهات مفيدة لتخزين البيانات بطريقة مضغوطة ، ويمكن الوصول إليها بسرعة باستخدام وظائف مكتبة C ++ القياسية.لتغيير عنصر في متجه ، تحتاج أولاً إلى إنشاء كائن متجه ثم استخدام المُنشئ المناسب لتحديد حجم المتجه.بعد ذلك ، يمكنك استخدام وظيفة insert () لإضافة عناصر جديدة إلى نهاية المتجه ، أو يمكنك استخدام وظيفة delete () لإزالة العناصر من المتجه.أخيرًا ، يمكنك الوصول إلى العناصر الفردية في متجه باستخدام وظائف مكتبة C ++ القياسية مثل get () و set () و front ().
كيف تصرح عن المتجه في C ++؟
كيف تقوم بتغيير عنصر في متجه في C ++؟
لتغيير العنصر في الموضع "i" للمتجه ، استخدم الكود التالي:
المتجه
- ؛ // إنشاء 10 ناقلات مع عناصر كثافة العمليات
- ؛ // إضافة 5 إلى المتجه الأول
ما هي خصائص المتجه في C ++؟
المتجه في C ++ هو بنية بيانات تخزن سلسلة من العناصر.يمكن الوصول إلى كل عنصر في المتجه من خلال رقم الفهرس الخاص به ، مما يسهل الوصول إلى العناصر ومعالجتها.للناقل أيضًا العديد من الخصائص الأخرى ، بما في ذلك:
- يمكن أن ينمو الناقل أو يتقلص حسب الحاجة.
- يدعم الوصول العشوائي لأي عنصر في التسلسل.
- إنها ذاكرة فعالة لأنها تستخدم مساحة أقل من القائمة أو المصفوفة عند تخزين نفس الكمية من البيانات.
كيف تقوم بتهيئة متجه في C ++؟
في C ++ ، يمكنك تهيئة متجه باستخدام فئة std :: vector.للقيام بذلك ، تحتاج أولاً إلى إنشاء مثيل لفئة std :: vector.بعد ذلك ، تحتاج إلى تحديد حجم المتجه.أخيرًا ، تحتاج إلى تهيئة عناصر المتجه.هنا مثال:
الأمراض المنقولة جنسيا :: ناقلات
v [0] = 0 ؛ // يعين العنصر في الموضع 0 إلى الصفر
الخامس [1] = 1 ؛ // يعين العنصر في الموضع 1 إلى واحد
الخامس [2] = 2 ؛ // يعين العنصر في الموضع 2 إلى 2
...
يمكنك أيضًا استخدام طرق تهيئة أخرى مثل استدعاءات المُنشئ الصريحة أو استخدام كائنات auto_ptr.لمزيد من المعلومات حول النواقل في C ++ ، يرجى الاطلاع على
.
كيف يمكنك الوصول إلى العناصر في متجه في C ++؟
هناك عدة طرق للوصول إلى العناصر في متجه في C ++.إن أبسط طريقة هي استخدام عامل الفهرسة ، []:
المتجه
الخامس [1] = 6 ؛ // يعين القيمة في الموضع 1 من v إلى 6
الخامس [2] = 7 ؛ // يعين القيمة في الموضع 2 من v إلى 7
الطريقة الثانية هي استخدام عامل تشغيل الشرائح ، []:
المتجه
الطريقة الثالثة هي استخدام حلقة for تعتمد على النطاق:
لـ (int i = 0 ؛ i :: const_iterator itr = v.begin () ؛ متجه
الطريقة الرابعة هي استخدام مؤشر الدالة: void changeElementInVector (vector & vec) {vec [vec.size () - 1] = 7؛}
الطريقة الخامسة هي استخدام متغير مكرر: int main () {vector
تأخذ ChangeElementInVector وسيطتين - vec ، والتي يجب أن تكون كائنًا متجهًا صالحًا وستقوم changeElementInVector بعملها مع هذا الكائن.هناك العديد من الطرق التي يمكنك من خلالها الوصول إلى العناصر في المتجهات ولكن هذه بعض العناصر الشائعة.
- ؛ // v يحتوي على القيم 0 و 1 و 2 و 3 و 4
- ؛ // v يحتوي على القيم 0 و 1 و 2 و 3 و 4
- = 5 ؛ // يعين القيمة في الموضع من 0 إلى 3 من v إلى 5
- = 8 ؛ // يعين القيمة في الموضع 4 من خلال جميع العناصر من v إلى 8
كيف تقوم بتغيير عنصر في متجه في C ++؟
هناك عدة طرق لتغيير عنصر في متجه في C ++.إن أبسط طريقة هي استخدام دالة std :: vector :: push_back () ، والتي ستضيف العنصر الجديد في نهاية المتجه.هناك طريقة أخرى وهي استخدام الدالة std :: vector :: resize () ، والتي ستغير حجم المتجه بحيث يمكنه الاحتفاظ بالعدد الجديد من العناصر.أخيرًا ، يمكنك استخدام أحد الخوارزميات المضمنة في C ++ للعثور على عنصر واستبداله في ناقل.
ما هو الفرق بين المصفوفة و avector في C ++؟
المتجه هو هيكل بيانات يخزن سلسلة من العناصر.المصفوفة هي بنية بيانات تخزن عنصرًا واحدًا ثابت الحجم.يمكن الوصول إلى المتجه في وقت O (1) ، بينما يمكن أن تستغرق المصفوفة وقتًا يتناسب مع حجم المصفوفة.بالإضافة إلى ذلك ، تكون المتجهات أكثر كفاءة عندما يتعلق الأمر باستخدام الذاكرة لأنها تستخدم مساحة أقل من المصفوفات.أخيرًا ، تدعم المتجهات الوصول العشوائي ، مما يعني أنه يمكنك العثور بسرعة على عناصر معينة وتعديلها داخل المتجه دون الحاجة إلى البحث في جميع محتوياته.
هناك طريقتان رئيسيتان لإنشاء متجه في C ++: استخدام فئة std :: vector أو استخدام عامل التشغيل الجديد.تعتبر فئة std :: vector أسهل في الاستخدام ولكنها لا تحتوي على بعض الميزات التي يوفرها المشغل الجديد (مثل الوصول العشوائي). عند إنشاء متجه باستخدام عامل التشغيل الجديد ، يجب عليك تحديد عدد العناصر التي سيتم تخزينها في المتجه (وتسميتها أيضًا).
لتغيير عنصر داخل متجه ، تحتاج أولاً إلى تحديد الفهرس الموجود داخل المتجه الذي يحتوي على العنصر الذي تريده.ثم تستخدم أحد عوامل التخصيص العديدة المحملة بشكل زائد لتعيين القيمة التي تريدها لهذا الفهرس.علي سبيل المثال:
الأمراض المنقولة جنسيا :: ناقلات
كيف تضيف عناصر إلى متجه في C ++؟
في C ++ ، يمكنك إضافة عناصر إلى متجه باستخدام وظيفة push_back ().بناء جملة هذه الوظيفة كما يلي:
المتجه
v.push_back (ر) ؛ // أضف t إلى نهاية المتجه
ستدرج وظيفة push_back () t في نهاية المتجه ، بغض النظر عما إذا كان v.size () أكبر من n أم لا.إذا كانت v.size () أكبر من n ، فإن v.push_back () سيغير حجم المتجه بحيث يحتوي على مساحة كافية لاستيعاب t وجميع العناصر اللاحقة.
كيف تزيل العناصر من vectorinC ++؟
في C ++ ، يمكنك إزالة العناصر من متجه باستخدام عامل الحذف.علي سبيل المثال:
المتجه
عامل الحذف يعمل على المصفوفات وكذلك المتجهات.لإزالة عنصر من مصفوفة ، استخدم وظيفة erase ():
مجموعة مصفوفة
ما هي بعض العمليات الشائعة على vectorsinC ++؟
- كيفية إضافة عنصر إلى متجه في C ++؟
- كيفية حذف عنصر من متجه في C ++؟
- كيفية تغيير حجم متجه في C ++؟
- كيفية نسخ متجه في C ++؟
- كيفية عكس ترتيب العناصر في متجه في C ++؟
كيف يمكنك فرز عناصر avectorinC ++؟
هناك عدة طرق لفرز عناصر المتجه في C ++.إن أبسط طريقة هي استخدام دالة std :: sort ().تأخذ هذه الوظيفة وسيطين: الأولى هي المتجه المراد فرزها ، والثانية هي دالة مقارنة تحدد كيفية مقارنة العناصر.يوضح مثال الكود التالي كيفية استخدام std :: sort () لفرز متجه من الأعداد الصحيحة:
الأمراض المنقولة جنسيا :: ناقلات
v.push_back (الأمراض المنقولة جنسياً :: متجه
يفرز مثال الكود هذا متجهًا من الأعداد الصحيحة باستخدام وظائف مكتبة C ++ القياسية ، بما في ذلك push_back () و المشغل + و المشغل- *.لفرز مصفوفة باستخدام هذه الوظائف ، يجب أولاً تعريف متغير مصفوفة ثم تخصيص محتوياته لهذا المتغير قبل استدعاء إحدى هذه الدوال عليه.على سبيل المثال ، إليك كيفية التصريح عن مصفوفة عدد صحيح باسم myArray وتهيئتها ببعض القيم:
myArray [0] = 1 ؛ myArray [1] = 2 ؛ myArray [2] = 3 ؛ ثم يمكنك استدعاء std :: sort () على myArray مثل هذا:
std :: sort (myArray، [] (const int & x، const int & y) {return x> y؟1: -1 ؛}) ؛ لاحظ أنه عند فرز مصفوفة باستخدام وظائف مكتبة C ++ القياسية ، يجب عليك تحديد وظيفة العضو التي تريد استخدامها كوظيفة مقارنة - في هذه الحالة ، [] (const int & x، const int & y) {return x> y؟1: -1 ؛}. إذا لم تحدد وظيفة العضو التي تريد استخدامها كوظيفة مقارنة ، فإن C ++ ستعمل بشكل افتراضي على مقارنة كل عنصر من المصفوفات بطريقة معجمية - أي من أقصى اليسار إلى أقصى اليمين داخل كل بُعد من أبعاد كائن المصفوفة.يمكنك أيضًا استخدام خوارزميات مكتبة C ++ القياسية مثل البحث الثنائي أو الفرز السريع بدلاً من المقارنات البسيطة عند فرز المصفوفات.لمزيد من المعلومات حول فرز المصفوفات في C ++ ، راجع القسم
تتمثل إحدى المهام الشائعة التي تتضمن المتجهات في العثور على جميع العناصر داخل نطاق معين - على سبيل المثال ، إيجاد جميع الأرقام الفردية بين 1 و 10 شاملًا أو جميع الأرقام الزوجية بين 0 و 9 ضمناً.
- ؛ v.push_back (؛ v.push_back (؛ // فرز عناصر المتجه باستخدام std :: sort (). // لاحظ أن هذا الرمز يستخدم الأقواس لأن هناك ثلاث وسائط // تم تمريرها إلى std :: sort (). int قارن = 0 ؛ لـ (auto & e: v) {if (e> {Compar = 1؛} else if (e> {قارن = -1؛} else {continue؛}} إذا (قارن! = {std :: كوت
- 5 "فرز المصفوفات" في الفصل 9 "وظائف" في مرجع المكتبة القياسي.
ما مدى تعقيد العمليات المختلفة في المتجهات في C ++؟
لا توجد إجابة واحدة تناسب الجميع على هذا السؤال ، لأن تعقيد العمليات المختلفة على المتجهات في C ++ سيختلف اعتمادًا على التنفيذ المحدد.ومع ذلك ، يمكن تقديم بعض النصائح العامة حول كيفية تغيير عنصر في متجه في C ++ أدناه.
أولاً وقبل كل شيء ، من المهم أن نفهم أن تغيير عنصر في متجه في C ++ ليس عادةً عملية معقدة بشكل خاص.في الواقع ، تسمح معظم تطبيقات C ++ بحساب المؤشر البسيط وعمليات الفهرسة الأساسية لاستخدامها في تعديل العناصر داخل المتجه.على هذا النحو ، فإن تعقيد تعديل عنصر داخل المتجه يعتمد عادةً فقط على سرعة التنفيذ الخاص بك ومعرفتك ببنيات البرمجة ذات الصلة.
بشكل عام ، ومع ذلك ، يمكن غالبًا تغيير عنصر داخل ناقل باستخدام عدد قليل نسبيًا من سطور التعليمات البرمجية أو حتى عبارات فردية.وفقًا لذلك ، إذا لم تكن معتادًا على أي بنيات برمجة محددة تتعلق بالمتجهات أو تريد تقليل مقدار التعليمات البرمجية التي تحتاج إلى كتابتها من أجل تعديل عنصر داخل متجه ، فقد يكون من المفيد استشارة الموارد عبر الإنترنت أو مراجعة عينات التعليمات البرمجية الموجودة من قبل بدء مشروعك الخاص.