"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني العثور بكفاءة على القيم القصوى والدنيا داخل المتجه في C++؟

كيف يمكنني العثور بكفاءة على القيم القصوى والدنيا داخل المتجه في C++؟

تم النشر بتاريخ 2024-11-13
تصفح:897

How do I efficiently find the maximum and minimum values within a vector in C  ?

العثور على الحد الأقصى أو الحد الأدنى للقيمة في المتجه في لغة C

في لغة C، يعد الحصول على الحد الأقصى أو الحد الأدنى للقيمة في المتجه مهمة مباشرة . من خلال استخدام وظائف STL (مكتبة النماذج القياسية)، يمكننا تحقيق ذلك بكفاءة دون التكرار عبر الحاوية بأكملها.

باستخدام std::max_element() وstd::min_element()

توفر المكتبة القياسية الوظائف std::max_element() وstd::min_element() للعثور على الحد الأقصى والحد الأدنى من العناصر في سلسلة من القيم، على التوالي. تأخذ هذه الوظائف زوجًا من التكرارات كوسيطات، مما يدل على النطاق الذي يجب إجراء البحث فيه. القيمة المرجعة عبارة عن مكرر يشير إلى العنصر ذي القيمة القصوى/الدنيا.

Syntax:

std::max_element(iterator_begin, iterator_end);
std::min_element(iterator_begin, iterator_end);

مثال:

#include 
#include 

std::vector v = {1, 3, 5, 7, 9};

int max_num = *std::max_element(v.begin(), v.end());
int min_num = *std::min_element(v.begin(), v.end());

std::cout 

استخدام المصفوفات مقابل المتجهات

المتجهات والمصفوفات عبارة عن حاويات في ج . ومع ذلك، تكون المتجهات ديناميكية بينما تكون المصفوفات ثابتة. وبالتالي، فإن طريقة الحصول على الحد الأقصى/الحد الأدنى للقيمة تختلف قليلاً.

بالنسبة للمصفوفة، يمكنك الوصول مباشرة إلى العناصر وتحديد الحد الأقصى/الحد الأدنى للقيمة من خلال التكرار عبر المصفوفة.

مثال:

int arr[] = {1, 3, 5, 7, 9};
int size = sizeof(arr) / sizeof(arr[0]);

int max_num = arr[0];
int min_num = arr[0];

for (int i = 1; i في الختام، يعد استخدام std::max_element() وstd::min_element() طريقة ملائمة للعثور على القيم القصوى والدنيا في المتجه. بالنسبة للمصفوفات، يمكنك التكرار عبر العناصر لتحقيق نفس النتيجة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3