ডুপ্লিকেটগুলি পরীক্ষা করার জন্য আমি খুঁজে পেয়েছি একমাত্র উপায় 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 দ্বারা প্রয়োগ করা হয়েছিল । এটি বর্তমান জঞ্জাল মধ্যেও ।