निम्नलिखित हैश फ़ंक्शन (जो निरंतर 0 देता है) में कोई प्रभाव नहीं पड़ता है?unordered_map - हैश फ़ंक्शन का कोई प्रभाव नहीं है
के बाद से हैश फंक्शन निरंतर लौटा रहा है, मैं के रूप में उत्पादन सभी मूल्यों 3. होने के लिए हालांकि, यह विशिष्ट, एक अनूठा मूल्य के लिए std::vector
मान मैप करने के लिए अपने हैश समारोह निरंतर किया जा रहा है की परवाह किए बिना लगता है उम्मीद कर रहा था।
#include <iostream>
#include <map>
#include <unordered_map>
#include <vector>
// Hash returning always zero.
class TVectorHash {
public:
std::size_t operator()(const std::vector<int> &p) const {
return 0;
}
};
int main()
{
std::unordered_map<std::vector<int> ,int, TVectorHash> table;
std::vector<int> value1({0,1});
std::vector<int> value2({1,0});
std::vector<int> value3({1,1});
table[value1]=1;
table[value2]=2;
table[value3]=3;
std::cout << "\n1=" << table[value1];
std::cout << "\n2=" << table[value2];
std::cout << "\n3=" << table[value3];
return 0;
}
प्राप्त उत्पादन:
1=1
2=2
3=3
अपेक्षित उत्पादन:
1=3
2=3
3=3
मैं हैश के बारे में क्या याद आ रही है?
क्या आप अपने डेटा को गायब कर देते हैं जब हैश दुर्घटना से अलग डेटा के लिए समान हो जाता है? – MikeCAT
मुझे यह गायब होने की उम्मीद नहीं है। लेकिन मैं उम्मीद करता हूं कि हैश फ़ंक्शन एक ही स्थिति में अलग-अलग कुंजी के मानचित्र को ओवरराइट किया जाए। – rkioji
'table [your_hash_function (your_data)] = your_data का उपयोग करने के बारे में; 'जहां' table' 'std :: unordered_map' है? – MikeCAT