تمام سوالات سوالات بدون پاسخ سوال بپرسید

دوستان در برنامه حالتی دارم که می خواهم item های قدیمی را از vectorی حذف کنم. برای این کار لازم است تا روی vector پیمایش کنم و flag خاصی را روی هر کدام از اعضای آن بررسی کنم و هر کدام که شرایط مورد نظرم را داشتند، حذف کنم. اما مشکل این است که با حذف یک مورد از vector در دور بعدی پیمایش به مشکل می خورم. البته کاملاً طبیعی است چون iterator ی که برای پیمایش استفاده می شود، نامعتبر می شود. چطور این مسئله را حل کنم؟

1 پاسخ

حتماً می دونید که برای حذف از vector می تونید از تابع erase استفاده کنید. اما شاید به خروجی این تابع دقت نکرده باشید. خروجی این تابع دقیقاً iterator مناسب و تنظیم شده روی مورد بعدی در vector است. پس با استفاده از این موضوع براحتی می تونید این کار رو به این صورت انجام بدید:

int digits[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
vector<int> vec(digits, digits + 10); 
vector<int>::iterator iter;
while (iter != vec.end())
{
    if ((*iter)%2==0)
        iter = vec.erase(iter);
    else iter++;
}

همانطور که مشخص است این مثال اعداد زوج را از vector مذکور حذف می کند.

toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×37
  • ×22
  • ×1
  • ×1
  • پرسیده شده: 15 ژوئن '12, 22:31
  • بازدید: 2,292 بار
  • آخرین بروزرسانی: 15 ژوئن '12, 22:46

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها