আমি std::string::find
স্ট্যান্ডার্ড সি ++ ধারকগুলির সাথে বেমানান থাকার আচরণটি খুঁজে পাই ।
যেমন
std::map<int, int> myMap = {{1, 2}};
auto it = myMap.find(10); // it == myMap.end()
তবে একটি স্ট্রিংয়ের জন্য,
std::string myStr = "hello";
auto it = myStr.find('!'); // it == std::string::npos
পরিবর্তে ব্যর্থ myStr.find('!')
ফিরে আসা উচিত নয় কেন ?myStr.end()
std::string::npos
যেহেতু std::string
অন্যান্য ধারকগুলির সাথে তুলনা করার সময় এটি কিছুটা বিশেষ, আমি ভাবছি যে এর পিছনে কোনও আসল কারণ আছে কিনা। (আশ্চর্যের বিষয়, আমি এই কোথাও কাউকে জিজ্ঞাসাবাদ করতে পাইনি)।
std::string
অভ্যন্তরীণভাবে এমন চরিত্রগুলি থাকে যা সস্তা উপাদান (স্মৃতির ক্ষেত্রে) থাকে। এবং তদ্ব্যতীত, অক্ষরটি কেবলমাত্র টাইপকে std::string
ধারণ করতে পারে। অন্যদিকে std::map
, আরও জটিল উপাদান নিয়ে গঠিত। এছাড়াও, এর স্পেসিফিকেশন std::map::find
বলে যে এটির কোনও উপাদান খুঁজে পাওয়ার কথা, এবং এর স্পেসিফিকেশন std::string::find
বলে যে এটি কাজটি পজিশন খুঁজে পাওয়া।