با سلام،
چطور میشه تو حلقه for دو تا متغییر رو نمو داد. من کد زیر رو نوشتم اما فقط it3 افزایش پیدا میکنه
کد:for(it2=list2.begin(),it3=list3.begin();it2!=list2.end() && it3!=list3.end();it2++ && it3++)
}
.
.
.
{
Printable View
با سلام،
چطور میشه تو حلقه for دو تا متغییر رو نمو داد. من کد زیر رو نوشتم اما فقط it3 افزایش پیدا میکنه
کد:for(it2=list2.begin(),it3=list3.begin();it2!=list2.end() && it3!=list3.end();it2++ && it3++)
}
.
.
.
{
اینو تست کن ببین میشه یا نه.کد:for(i=0,j=0 ; i>10 && j<20 ; i++, j++ )
{
.
.
.
}
به خاطر اون && هست که تو اخر حلقه گذاشتید
اینجا : it2++ && it3++
بایستی به جاش , میذاشتید.
یعنی اینطور می شد
[HTML]for(it2=list3.begin(),it3=list3.begin();it2!=list2 .end() && it3!=list3.end();it2++ , it3++)
}
.
.
.
{
[/HTML]
دوستان ببخشید تو قسمت آخر قبلا هم بینشون کاما گذاشته بودم درست کار نمی کرد . بینشون && هم گذاشتم باز کار نکرد.
دوستان سوال اینه:
من سه تا لیست دارم که طولشون الزاما با هم برابر نیست .هدف پیدا کردن عناصر مشترک بین لیست 1و دو تا لیست دیگه یعنی2 وو 3 و حذف شون از لیست 1هست.دو تا تکرارگر تعریف شده که به لسیت 2و لیست 3 اشاره میکنه. کافیه که محتوای گره در درست بررسی تو یکی از دو تا لیست 2و3 با عنصر خونده شده از لیست 1 برابر باشه تا از لیست 1 حذف بشه.کد زیر رو نوشتم اما در تغییر iterator ها دچار مشکل میشه.
اینم کدیه که نوشتم
کد:int flag,x=0;
for(it=list1.begin();it!=list1.end();++it,++x)
{flag=0;
for(it2=list2.begin(),it3=list3.begin();it2!=list2.end() && it3!=list3.end();it2++ , it3++)
{
if(it2->getId()==(*it) || it3->getId()==(*it))
{
tlist.erase (it);
flag=1;
it=tlist.begin();
advance(it,x);
}
if(flag==1)
break;
}
}
نقل قول:
پیشنهاد میکنم داخل for دوم یک cout قرار بدید که مقدار it2 رو چاپ کنه تا مطمئن بشید it2 افزایش پیدا نمیکنه و مشکل از جای دیگه نیست؛ همچنین اطمینان حاصل کنید که توابع ()begin و ()end مقادیر درستی برمیگردونن؛ چون قسمت افزایش iteratorها باید به همین شکل باشه و درسته.
يكي از اشكالات اينه كه اگه مثلا طول دومي از سومي كمتر باشه حلقه دوم چندتا از آخر سومي رو چك نميكنه...
از همه ممنونم درستش کردم.