2013-08-04 7 views

उत्तर

2

हैशर को भी अद्यतन करने की आवश्यकता है, क्योंकि डिफ़ॉल्ट हैश एल्गोरिदम does not produce identical hash code for strings that differ only in the case of their symbols - केस-असंवेदनशील तारों के साथ काम करने के उद्देश्य से हैश कोड फ़ंक्शन की एक आवश्यक संपत्ति है।

std::string s1 = "Hello"; 
std::string s2 = "hello"; 
std::hash<std::string> hash_fn; 

size_t hash1 = hash_fn(s1); 
size_t hash2 = hash_fn(s2); 

std::cout << hash1 << '\n'; 
std::cout << hash2 << '\n'; 

यह ideone पर विभिन्न मूल्यों को दिखाता है:

101669370 
3305111549 
+0

आपका जवाब सामान्य रूप में सही है, लेकिन हम के बारे में 'std :: हैश ' समारोह यहां बात कर रहे हैं। तो आपका जवाब गलत हो सकता है कि कैसे 'std :: हैश ' तारों के लिए काम करता है (जो मुझे नहीं पता)! – MBZ

+0

@ एमबीजेड 'स्ट्रिंग :: हैश' को' स्ट्रिंग 'के लिए चरित्र मामले पर ध्यान देने के लिए बदलने का अर्थ नहीं होगा: सीपीयू उपयोग के मामले में समारोह अधिक महंगा होगा, और इसके परिणामस्वरूप अधिक टकराव भी होंगे । – dasblinkenlight

+0

आप सभी स्ट्रिंग्स लोअरकेस को अपने पास रखने से पहले – aaronman

संबंधित मुद्दे