আমি নির্দিষ্ট শর্তের ভিত্তিতে মানচিত্র থেকে বিভিন্ন উপাদান মুছে ফেলার চেষ্টা করছিলাম। আমি কীভাবে এটি এসটিএল অ্যালগরিদম ব্যবহার করে করব?
প্রাথমিকভাবে আমি ব্যবহারের কথা ভেবেছিলাম remove_if
তবে এটি সম্ভব নয় কারণ সরানো_আইএফ সংঘবদ্ধ পাত্রে কাজ করে না।
মানচিত্রের জন্য কাজ করে এমন কোনও "মুছে ফেলা_ আইফ" আছে কি?
একটি সহজ বিকল্প হিসাবে, আমি মানচিত্রের লুপিং এবং মুছে ফেলার কথা ভাবি। তবে কী মানচিত্রটি লুপিং করে কোনও নিরাপদ বিকল্পটি মুছে ফেলা হচ্ছে? (পুনরাবৃত্তি মোছার পরে অবৈধ হয়ে উঠেছে)
আমি নিম্নলিখিত উদাহরণ ব্যবহার করেছি:
bool predicate(const std::pair<int,std::string>& x)
{
return x.first > 2;
}
int main(void)
{
std::map<int, std::string> aMap;
aMap[2] = "two";
aMap[3] = "three";
aMap[4] = "four";
aMap[5] = "five";
aMap[6] = "six";
// does not work, an error
// std::remove_if(aMap.begin(), aMap.end(), predicate);
std::map<int, std::string>::iterator iter = aMap.begin();
std::map<int, std::string>::iterator endIter = aMap.end();
for(; iter != endIter; ++iter)
{
if(Some Condition)
{
// is it safe ?
aMap.erase(iter++);
}
}
return 0;
}
for(auto iter=aMap.begin(); iter!=aMap.end(); ){ ....}
বিশৃঙ্খলা কমাতে ব্যবহার করতে পারেন । অন্যরা যেমন বলেছিল তেমন বিশ্রাম। এই প্রশ্নটি আমাকে এখনই কিছু চুল বিভাজন থেকে বাঁচিয়েছে ;-)