के साथ अप्रत्याशित टकराव मुझे पता है कि 32 बी int में स्ट्रिंग की असीमित संख्या टकराव उत्पन्न करनी चाहिए, लेकिन मुझे हैशिंग फ़ंक्शन से कुछ अच्छा वितरण की उम्मीद है।std :: हैश
क्या यह अजीब बात नहीं है कि इन 2 तारों में एक ही हैश है?
size_t hash0 = std::hash<std::string>()("generated_id_0");
size_t hash1 = std::hash<std::string>()("generated_id_1");
//hash0 == hash1
मैं जानता हूँ कि मैं boost::hash<std::string>
या दूसरों का उपयोग कर सकते हैं, लेकिन मैं पता है कि std::hash
साथ कुछ गड़बड़ है चाहता हूँ। क्या मैं इसे गलत इस्तेमाल कर रहा हूँ? क्या मुझे किसी भी तरह से "बीज" नहीं करना चाहिए?
क्या कंपाइलर और संस्करण? – Joe
@Joe मैं MSVC10 – relaxxx
@relaxxx का उपयोग करें: MSVC10 शायद एक पूर्ण C++ 11 कार्यान्वयन प्रदान करने के लिए पिछले होगा (अगर वे कभी होगा)। यदि आप एक कामकाजी कार्यान्वयन चाहते हैं, तो सबसे पूरा एक क्लैंग है। आप अधिक लोकप्रिय जीसीसी भी कोशिश कर सकते हैं। – Dani