আমি ভারী ব্যবহার করছি std::set<int>এবং প্রায়শই আমাকে কেবল এই ধরণের সেটে একটি সংখ্যা রয়েছে কিনা তা খতিয়ে দেখা দরকার।
আমি লিখতে এটি স্বাভাবিক মনে হবে:
if (myset.contains(number))
...
তবে containsসদস্যের অভাবের কারণে , আমাকে জটিল লেখা দরকার:
if (myset.find(number) != myset.end())
..
বা হিসাবে হিসাবে সুস্পষ্ট:
if (myset.count(element) > 0)
..
এই ডিজাইনের সিদ্ধান্তের কোনও কারণ আছে কি?
count()পদ্ধতির সাথে আরেকটি (আরও মৌলিক) সমস্যাটি হ'ল এটি করার চেয়ে বেশি কাজ করে countains()।
contains()যা আয় একটি boolহবে যেখানে উপাদান সংগ্রহ করা হয় সম্পর্কে মূল্যবান তথ্য হারান । find()সেই তথ্যটি পুনরুক্তি আকারে সংরক্ষণ করে এবং ফেরত দেয়, সুতরাং এসটিএল এর মতো জেনেরিক লাইব্রেরির জন্য এটি আরও ভাল পছন্দ। (এটি bool contains()
contains(set, element)সেটটির সর্বজনীন ইন্টারফেস ব্যবহার করে একটি ফ্রি ফাংশন লেখা সহজ । সুতরাং, সেটটির ইন্টারফেস কার্যত সম্পূর্ণ; একটি সুবিধার পদ্ধতি যুক্ত করে কেবল কোনও অতিরিক্ত ফাংশন সক্ষম না করে ইন্টারফেস বাড়িয়ে তোলে, যা সি ++ উপায় নয়।