سؤالي عن ارسال مجموعة قيم لـ vector كيف يكون ؟ حاولت بطريقة قريبة من المصفوفات هكذا :
vector<int> in;
in.insert{1,1,5};ولكن لم أنجح
سؤالي عن ارسال مجموعة قيم لـ vector كيف يكون ؟ حاولت بطريقة قريبة من المصفوفات هكذا :
vector<int> in;
in.insert{1,1,5};ولكن لم أنجح
تم تعديل هذه المشاركة بواسطة هدف الشمالي في 4 يوليو 2012 في 00:48
انظر هذا المثال :
#include <vector>
#include <iostream>
int main( )
{
using namespace std;
vector <int> v1;
vector <int>::iterator Iter;
v1.push_back( 10 );
v1.push_back( 20 );
v1.push_back( 30 );
cout << "v1 =" ;
for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
cout << " " << *Iter;
cout << endl;
v1.insert( v1.begin( ) + 1, 40 );
cout << "v1 =";
for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
cout << " " << *Iter;
cout << endl;
v1.insert( v1.begin( ) + 2, 4, 50 );
cout << "v1 =";
for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
cout << " " << *Iter;
cout << endl;
v1.insert( v1.begin( )+1, v1.begin( )+2, v1.begin( )+4 );
cout << "v1 =";
for (Iter = v1.begin( ); Iter != v1.end( ); Iter++ )
cout << " " << *Iter;
cout << endl;
}راجع vector::insert - Standard C++ Library.
أرجو لك التوفيق.
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
المثال نوعًا ما واضح ,ولكن السطر التالي لم يتضح :
v1.insert( v1.begin( )+1, v1.begin( )+2, v1.begin( )+4 );
لكي تفهم الكود ستحتاج إلى معرفة بسيطة لبعض الدوال المُستخدمة مع الــ vector :)
انظر المثال :
#include <iostream>
#include <vector>
using namespace std;
int main()
{
typedef vector<int> vi;
// إنشاء فكتور يحوي 10 خانات
vi v(10);
// تغيير بعض عناصر الفكتور
v.at(2) = 2;
v.at(5) = 7;
// تمديد الفكتور
v.resize(11);
v.at(10) = 5;
// إضافة عنصر إلى نهاية الفكتور
v.push_back(13);
// إظهار عناصر الفكتور
for (int i=0; i<v.size(); ++i)
{
cout << v << endl;
}
return 0;
}بالنسبة للدالة insert فلها ثلاث صيغ :
الصيغة الأولى : الوسيط الأول عبارة عن iterator يُحدد المكان الذي سيتم فيه وضع العنصر x. في هذه الحالة ستعيد الدالة, iterator جديد يشير إلى آخر عنصر تمت إضافته إلى الفكتور.
iterator insert(iterator i, value_type x)
الصيغة الثانية : تُضيف n نسخة من الوسيط الثالث قبل العنصر الذي يُشير إليه المؤشر i.
void insert(iterator i, size_type n, value_type valeur)
انظر المثال :
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<float> v(5);
int i = 0;
while(i < v.size())
v.at(i++) = i;
v.insert( v.begin( ) + 5, 3, 8.0312 );
for (i=0; i<v.size(); ++i)
cout << v << endl;
return 0;
}الصيغة الثالثة : تُضيف جميع عناصر الفكتور الواقعة في المجال [first, last], الإضافة ستكون بعد العنصر الذي يُشير إليه المؤشر position.
void insert(iterator position, const_iterator first, const_iterator last);
إذا كان لديك أي سؤال آخر فلا تتردد في طرحه :)
أرجو لك التوفيق.
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
+1
لكن هل يمكن إضافة القيم عند إنشاء الـ vector مثل المصفوفة هكذا :
int d[]={1,1,1,2};الحقيقة مشكلتي مع المصفوفات أنه يبدو أن لها طول محدد وضاقت على مشروعي , فعند تطبيق درس للأخ مصطفى على الرابط :
نجحت عند التطبيق على الملفات الصغيرة أما الملفات المتوسطة الحجم يحدث خطأ في البرنامج ،
فقلت أبحث عن مايقابل arraylist الموجود في java ووجدت أن أقرب شيء له هو الـvector ولكن يبدو أنه ليس مطلوبي , ولاأعرف ما الحل
اقتباسهل يمكن إضافة القيم عند إنشاء الـ vector مثل المصفوفة ؟
لا, استخدم at و insert لمثل هذا الأمر.
اقتباسالحقيقة مشكلتي مع المصفوفات أنه يبدو أن لها طول محدد وضاقت على مشروعي , فعند تطبيق درس للأخ مصطفى على الرابط :http://www.arabteam2...howtopic=263748
نجحت عند التطبيق على الملفات الصغيرة أما الملفات المتوسطة الحجم يحدث خطأ في البرنامج ،
فقلت أبحث عن مايقابل arraylist الموجود في java ووجدت أن أقرب شيء له هو الـvector ولكن يبدو أنه ليس مطلوبي , ولاأعرف ما الحل
يُمنع إدراج سؤالين في نفس الموضوع, السؤال الثاني لا علاقة له بالــ vector بشكل مباشر.
اكتب موضوعا جديدا و ضع به سؤالك و إن شاء الله ستجد المساعدة.
يُغلق الموضوع.
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
هذا الموضوع مغلق.