পরবর্তীতে , আমরা N4140 (সি ++ 14 স্ট্যান্ডার্ড) ব্যবহার করি ।
.6 17.6.3.4 হ্যাশ প্রয়োজনীয়তা অনুসারে ,
প্রত্যাশিত মানটি
k
প্রোগ্রামের সময়কালের জন্য কেবল যুক্তির উপর নির্ভর করবে ।[দ্রষ্টব্য: সুতরাং প্রোগ্রামটির প্রদত্ত কার্যকরকরণের জন্য একই ফলনের
h(k)
জন্য একই মূল্য সহ অভিব্যক্তির সমস্ত মূল্যায়ন । - শেষ নোট]k
এবং .9 20.9.12 ক্লাস টেম্পলেট হ্যাশ বলে
...
ইনস্ট্যান্টেশন করা উচিত
hash<Key>
:(1.1) - হ্যাশ প্রয়োজনীয়তা (17.6.3.4) পূরণ করুন ...
(1.2) - ...
এর অর্থ হ'ল একটি হ্যাশ মান value
(অর্থাত্ hash<decltype(value)>(value)
) যদি আপনি প্রোগ্রামটি পুনরায় চালু করেন তবে ভিন্ন মান নিতে পারে।
কিন্তু কেন? এই সীমাবদ্ধতাটি C ++ 11 এর স্ট্যান্ডার্ডে ছিল না, তবে C ++ 14, C ++ 17 এবং C ++ 20 এর স্ট্যান্ডার্ডে ছিল। একজন ব্যবহারকারী হিসাবে (কোনও এসটিএল বিকাশকারী নয়), যদি সংজ্ঞাবাদী হয় তবে এটি বেশ কার্যকর std::hash
হবে। একটি ডিস্ট্রিমেন্টিক হ্যাশ ফাংশন বাস্তবায়নে কোনও গাণিতিক সমস্যা আছে? তবে হ্যাশ ফাংশন যা আমরা প্রতিদিন ব্যবহার করি (যেমন অবচয় md5sum
বা নিরাপদ sha256
) সেগুলি হ্রাসকারী deter দক্ষতার কোনও সমস্যা আছে?