ডুপ্লিকেটগুলি পরীক্ষা করার জন্য আমি খুঁজে পেয়েছি একমাত্র উপায় wayোকানো এবং চেক std::pair.secondকরা false, তবে সমস্যাটি হ'ল কীটি অব্যবহৃত থাকলে এটি এখনও কিছু সন্নিবেশ করে, আমি যা চাই তা একটি map.contains(key);ফাংশন।
ডুপ্লিকেটগুলি পরীক্ষা করার জন্য আমি খুঁজে পেয়েছি একমাত্র উপায় wayোকানো এবং চেক std::pair.secondকরা false, তবে সমস্যাটি হ'ল কীটি অব্যবহৃত থাকলে এটি এখনও কিছু সন্নিবেশ করে, আমি যা চাই তা একটি map.contains(key);ফাংশন।
উত্তর:
ব্যবহার my_map.count( key ) ; এটি কেবল 0 বা 1 প্রদান করতে পারে যা মূলত আপনি চান বুলিয়ান ফলাফল।
পর্যায়ক্রমে my_map.find( key ) != my_map.end()খুব কাজ করে।
map::countহিসাবে এটি প্রয়োগ করা হয় find(__x) == end() ? 0 : 1;। জন্য multimapআপনি একটি কার্যকারিতা যুক্তি থাকতে পারে, কিন্তু যে ওপি এর প্রশ্ন না এবং আমি এখনও কমনীয়তা পছন্দ করে।
has(k)/ যোগ করা উচিত contains(k)। দরিদ্র ইন্টারফেস ডিজাইন। সন্ধান () পদ্ধতিটি খুব ভার্জোজ এবং এপ্রোচটি count(k)অবশ্যই শব্দার্থতত্ত্বের সাথে নয় has(k)। যে বিষয়টি জন্য হয় না find(k)। এই প্রশ্নের ভিউ গণনা পরীক্ষা করে দেখুন।
পোটোসওয়টারের উত্তরটি ঠিক আছে তবে আমি ব্যবহার findবা lower_boundতার পরিবর্তে পছন্দ করি । lower_boundবিশেষত দরকারী কারণ প্রত্যাবর্তনকারীটি পরে ইঙ্গিতযুক্ত সন্নিবেশের জন্য ব্যবহার করা যেতে পারে, আপনি কি একই কি দিয়ে কিছু সন্নিবেশ করতে চান?
map<K, V>::iterator iter(my_map.lower_bound(key));
if (iter == my_map.end() || key < iter->first) { // not found
// ...
my_map.insert(iter, make_pair(key, value)); // hinted insertion
} else {
// ... use iter->second here
}
valueসন্নিবেশ অপ্রয়োজনীয় হলে গণনা বাদ দেওয়া যেতে পারে।
lower_boundোকানো যত্ন করে না, সুতরাং একটি ভিত্তিক সমাধানটি ওভারকিল। আমি কেবল আমার উত্তরটি "সম্পূর্ণতার জন্য" উল্লেখ করেছি; যেমন আমি বলেছিলাম, আপনার পুরোপুরি যথেষ্ট। :-)
insertকোনও প্রাইরির বিকল্পের দিকে সম্পর্কটিকে নির্দেশ করা । আসলে, একটি ব্যবহার করা হয় তবে আরেকটি পার্থক্য নেই multimap, lower_boundপ্লেইন যেহেতু ইকুইভ্যালেন্ট রেঞ্জ শুরুতে পদ্ধতি টিপে insertপদ্ধতি পরিসীমা শেষে যোগ করা হয়েছে।
আপনার ডেসিডারেটাম, map.contains(key)স্ট্যান্ডার্ড সি ++ 2 এ খসড়ার জন্য নির্ধারিত । 2017 সালে এটি gcc 9.2 দ্বারা প্রয়োগ করা হয়েছিল । এটি বর্তমান জঞ্জাল মধ্যেও ।