3.6
Copied!
#include <iostream>
#include <iomanip>
#include <unordered_set>
#include <random>
#include <ctime>
#include <chrono>
using namespace std;
int main() {
default_random_engine rnd(time(0));
uniform_int_distribution<unsigned> g(100, 999);
unordered_multiset<int> unm;
size_t n = 60;
unm.reserve(n);
while (n--) unm.emplace(g(rnd));
cout << "Konteynerdagi segmentlar soni: "
<< unm.bucket_count()
<< "\n"
<< "Maksimal toʻldirishlar ko'ffitsenti: "
<< unm.max_load_factor()
<< endl;
auto start = chrono::system_clock::now();
auto res = unm.find(200);
auto end = chrono::system_clock::now();
auto elapsed = end - start;
cout << "Natija => "
<< elapsed.count()
<< endl;
// Oʻzimiz tomondam Maksimal toʻldirishlar ko'ffitsenti oʻrnatamiz
unm.max_load_factor(0.7);
unm.rehash(200);
cout << "Konteynerdagi segmentlar soni: "
<< unm.bucket_count()
<< "\n"
<< "Maksimal toʻldirishlar ko'ffitsenti: "
<< unm.max_load_factor()
<< endl;
start = chrono::system_clock::now();
res = unm.find(200);
end = chrono::system_clock::now();
elapsed = end - start;
cout << "Natija => "
<< elapsed.count()
<< endl;
cout << " Hash tuzilmasi " << endl;
for (size_t i = 0; i < unm.bucket_count(); i ) {
cout << "Segment N:" << setw(3) << i << " => ";
// Iteratorga lokal segmentlarni olish
auto first = unm.cbegin(i);
auto last = unm.cend(i);
while (first != last) {
cout << *first << " ";
}
cout << endl;
}
system("pause");
return 0;
}
Run on cpp.sh
Copied!