أدم محمد2 نشر 19 سبتمبر 2021 أرسل تقرير نشر 19 سبتمبر 2021 ألا يوجد دوال جاهزة للتعامل مع المصفوفات في c++ مثل الترتيب وإيجاد عنصر معين؟ 2 اقتباس
0 شرف الدين حفني نشر 19 سبتمبر 2021 أرسل تقرير نشر 19 سبتمبر 2021 يوجد بالفعل في c++ مكتبة STL والتي ترمز ل (Standard Template Library) والتي تتكون من أربع مكونات الحاويات: وتعبر عن هياكل البيانات المختلفة مثل vector, set, list, graph, tree المكررات(iterators) :يُستخدمو بالتوازي مع الحاويات من أجل إجراء عمليات على عناصر الحاويات الخوارزميات: هنا يوجد خوارزميات مختلفة لمهام مختلفة , وهنا تجد ما تريده , حيث تجد هنا خوارزميات للبحث والترتيب int x=1, y=0; std::swap(x,y); هذا مثلاً كود من المكتبة من أجل عملية الswapping int *result =std::find(arr.begin(), arr.end(), item) cout<<result-arr.begin() هذا كود من أجل البحث عن عنصر معين في المصفوفة 1 اقتباس
1 Wael Aljamal نشر 19 سبتمبر 2021 أرسل تقرير نشر 19 سبتمبر 2021 إن كنت تستخدم المصفوفات الساكنة ذات الطول الثابت، او غيرها يمكن استعمال تابع الترتيب ()std::sort كيف يعمل: int n = 10; // حجم المصفوفة int a = {1,2,3,7,8,4,5,6,0} // تهيئة // int a[n]; قم بالتعريف بهذه الطريقة إن أردن إدخال قيم من حلقة لاحقا sort ( a , a + n) أول وسيط هو مؤشر بدياية المصفوفة ثاني وسيط يمثل مؤشر نهابة المجال الذينريد ترتريبه في المصفوفة اسمها هو نفسه مؤشر على بدايتها، وعملية الجمع تمثل عملية إزاحة للمؤشر الآخر، هذين المؤشرين يحددان طول المصفوفة الخاضع للترتيب يمكن تمرير دالة مخصصة لتابع الترتيب في حال أردنا عمل ترتيب مختلف عن الافتراضي bool comp(int i, int j) { // تستقبل الدالة الوسيطين الحاليين الذين بينهما علاقة ترتيب } sort(a , a + n, comp); يمكن استعمال الدالة sort مع vector بتمرير المؤشرات حسب دوال vector: vector <int > v(n); sort(v.begin(), v.end(), comp); وبالنسبة لعملية البحث عن عنصر في مصفوفة في ++C يمكن استخدام الدالة find والتي تعيد مؤشر على آخر عنصر مرت عليه في المصفوفة، إما يكون العمنصر المطلوب أو مؤشر على نهاية المصفوفة #include <iostream> // std::cout #include <algorithm> // std::find #include <vector> // std::vector int main () { // بحث في مصفوفة عادية int ints[] = { 1, 2, 3, 4 }; int * p; p = std::find (ints, ints+4, 30); if (p != myints+4) std::cout << "موجود: " << *p << '\n'; else std::cout << "غير موجود\n"; // بحث في vector and iterator: std::vector<int> vec (ints,ints+4); std::vector<int>::iterator it; it = find (vec.begin(), vec.end(), 30); if (it != myvector.end()) std::cout << "موجود: " << *it << '\n'; else std::cout << "غير موجود\n"; return 0; } الشكل العام لتابع البحث: if( std::find(vector.begin(), vector.end(), item)!=vector.end() ){ // العنصر موجود } يوجد أيضا تابع البحث الثانئي binary search وهذا يشترط ترتيب المصفوفة: if(binary_search(vector.begin(), vector.end(), item)){ // موجود } اقتباس
السؤال
أدم محمد2
ألا يوجد دوال جاهزة للتعامل مع المصفوفات في c++ مثل الترتيب وإيجاد عنصر معين؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.