मैं समझने की कोशिश कर रहा हूं कि एक हैशटेबल के माध्यम से पुनरावृत्ति कैसे किया जा रहा है। मैं बस कल्पना नहीं कर सकता। मैं विशेष रूप से इस तरह के पुनरावृत्ति की गति में रूचि रखता हूं। उदाहरण के लिए:एक हैशटेबल के माध्यम से पुनरावृत्त कैसे किया जा रहा है?
QHash<int, std::string> hashTable;
...
for (auto it = hashTable.begin(); it != hashTable.end(); ++it)
std::cout << it.value() << std::endl;
यह एक O(hashTable.size())
आपरेशन है?
मैंने स्रोत कोड में खोदने की कोशिश की, लेकिन उचित परिभाषा नहीं मिली।
धन्यवाद! तो ऑपरेशन हमेशा रैखिक समय में है, है ना? –
हां, बाल्टी की संख्या के लिए रैखिक + प्रविष्टियों की संख्या के लिए रैखिक। – Philipp
आपका 'for' लूप एसटीएल एल्गोरिदम' std :: for_each' के बराबर है। वह एल्गोरिदम विज़िट किए जा रहे तत्वों की संख्या में रैखिक है। इसके अलावा, 'std :: unordered_map' कंटेनर में कम से कम एक आगे इटरेटर है, और ऐसे इटरेटर पर सभी ऑपरेशन सबसे अधिक निरंतर स्थिर हैं। इसका मतलब है कि एक पूरे हैश टेबल पर एक लूप में रैखिक समय जटिलता भी है (और केवल रैखिक आकार जटिलता नहीं)। – TemplateRex