Skip to content

Instantly share code, notes, and snippets.

@yasukei
Last active May 11, 2020 12:25
Show Gist options
  • Save yasukei/b0719c6fe5a35c86a6edfea26335eed0 to your computer and use it in GitHub Desktop.
Save yasukei/b0719c6fe5a35c86a6edfea26335eed0 to your computer and use it in GitHub Desktop.
std::unordered_map
#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> um;
auto print = [&]() {
std::cout << "um.empty(): " << um.empty() << "\n";
std::cout << "um.size(): " << um.size() << "\n";
std::cout << "um.max_size(): " << um.max_size() << "\n";
std::cout << "um.bucket_count(): " << um.bucket_count() << "\n";
std::cout << "um.max_bucket_count(): " << um.max_bucket_count() << "\n";
for (auto it = um.begin(); it != um.end(); ++it)
{
std::cout << "um[" << it->first << "]: " << it->second << "\n";
}
for (int i = 0; i < um.bucket_count(); ++i)
{
std::cout << "um.bucket_size(" << i << "): " << um.bucket_size(i) << "\n";
}
std::cout << "um.load_factor(): " << um.load_factor() << "\n";
std::cout << "um.max_load_factor(): " << um.max_load_factor() << "\n";
};
std::cout << "\n[Initial state]\n";
print();
std::cout << "\n[After insert()]\n";
um.insert({ "Jan", 1 });
print();
std::cout << "\n[After insert()]\n";
um.insert(std::make_pair("Feb", 2));
print();
std::cout << "\n[After clear()]\n";
um.clear();
print();
std::cout << "\n[After insert()]\n";
std::vector<std::string> month = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
for (int i = 0; i < month.size(); i++)
{
um.insert({ month[i], i+1 });
}
print();
std::cout << "\n[After erase()]\n";
for (auto it = um.begin(); it != um.end(); )
{
if (it->second % 2 == 0)
{
it = um.erase(it);
}
else
{
++it;
}
}
print();
std::cout << "\n[find(\"Jul\")]\n";
auto search = um.find("Jul");
if (search == um.end())
{
std::cout << "Not found" << "\n";
}
else
{
std::cout << search->second << " was found" << "\n";
}
return 0;
}
[Initial state]
um.empty(): 1
um.size(): 0
um.max_size(): 288230376151711743
um.bucket_count(): 8
um.max_bucket_count(): 1152921504606846975
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 0
um.bucket_size(3): 0
um.bucket_size(4): 0
um.bucket_size(5): 0
um.bucket_size(6): 0
um.bucket_size(7): 0
um.load_factor(): 0
um.max_load_factor(): 1
[After insert()]
um.empty(): 0
um.size(): 1
um.max_size(): 288230376151711743
um.bucket_count(): 8
um.max_bucket_count(): 1152921504606846975
um[Jan]: 1
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 0
um.bucket_size(3): 0
um.bucket_size(4): 0
um.bucket_size(5): 0
um.bucket_size(6): 1
um.bucket_size(7): 0
um.load_factor(): 0.125
um.max_load_factor(): 1
[After insert()]
um.empty(): 0
um.size(): 2
um.max_size(): 288230376151711743
um.bucket_count(): 8
um.max_bucket_count(): 1152921504606846975
um[Jan]: 1
um[Feb]: 2
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 1
um.bucket_size(3): 0
um.bucket_size(4): 0
um.bucket_size(5): 0
um.bucket_size(6): 1
um.bucket_size(7): 0
um.load_factor(): 0.25
um.max_load_factor(): 1
[After clear()]
um.empty(): 1
um.size(): 0
um.max_size(): 288230376151711743
um.bucket_count(): 8
um.max_bucket_count(): 1152921504606846975
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 0
um.bucket_size(3): 0
um.bucket_size(4): 0
um.bucket_size(5): 0
um.bucket_size(6): 0
um.bucket_size(7): 0
um.load_factor(): 0
um.max_load_factor(): 1
[After insert()]
um.empty(): 0
um.size(): 12
um.max_size(): 288230376151711743
um.bucket_count(): 64
um.max_bucket_count(): 1152921504606846975
um[May]: 5
um[Jan]: 1
um[Jun]: 6
um[Apr]: 4
um[Feb]: 2
um[Mar]: 3
um[Aug]: 8
um[Jul]: 7
um[Sep]: 9
um[Oct]: 10
um[Nov]: 11
um[Dec]: 12
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 1
um.bucket_size(3): 0
um.bucket_size(4): 1
um.bucket_size(5): 0
um.bucket_size(6): 0
um.bucket_size(7): 0
um.bucket_size(8): 0
um.bucket_size(9): 1
um.bucket_size(10): 0
um.bucket_size(11): 1
um.bucket_size(12): 0
um.bucket_size(13): 0
um.bucket_size(14): 0
um.bucket_size(15): 1
um.bucket_size(16): 0
um.bucket_size(17): 0
um.bucket_size(18): 1
um.bucket_size(19): 1
um.bucket_size(20): 1
um.bucket_size(21): 0
um.bucket_size(22): 0
um.bucket_size(23): 0
um.bucket_size(24): 0
um.bucket_size(25): 0
um.bucket_size(26): 0
um.bucket_size(27): 0
um.bucket_size(28): 0
um.bucket_size(29): 0
um.bucket_size(30): 0
um.bucket_size(31): 0
um.bucket_size(32): 0
um.bucket_size(33): 0
um.bucket_size(34): 1
um.bucket_size(35): 0
um.bucket_size(36): 0
um.bucket_size(37): 0
um.bucket_size(38): 1
um.bucket_size(39): 0
um.bucket_size(40): 0
um.bucket_size(41): 0
um.bucket_size(42): 0
um.bucket_size(43): 0
um.bucket_size(44): 0
um.bucket_size(45): 0
um.bucket_size(46): 1
um.bucket_size(47): 0
um.bucket_size(48): 0
um.bucket_size(49): 0
um.bucket_size(50): 0
um.bucket_size(51): 0
um.bucket_size(52): 0
um.bucket_size(53): 0
um.bucket_size(54): 0
um.bucket_size(55): 0
um.bucket_size(56): 0
um.bucket_size(57): 0
um.bucket_size(58): 0
um.bucket_size(59): 0
um.bucket_size(60): 1
um.bucket_size(61): 0
um.bucket_size(62): 0
um.bucket_size(63): 0
um.load_factor(): 0.1875
um.max_load_factor(): 1
[After erase()]
um.empty(): 0
um.size(): 6
um.max_size(): 288230376151711743
um.bucket_count(): 64
um.max_bucket_count(): 1152921504606846975
um[May]: 5
um[Jan]: 1
um[Mar]: 3
um[Jul]: 7
um[Sep]: 9
um[Nov]: 11
um.bucket_size(0): 0
um.bucket_size(1): 0
um.bucket_size(2): 0
um.bucket_size(3): 0
um.bucket_size(4): 1
um.bucket_size(5): 0
um.bucket_size(6): 0
um.bucket_size(7): 0
um.bucket_size(8): 0
um.bucket_size(9): 0
um.bucket_size(10): 0
um.bucket_size(11): 1
um.bucket_size(12): 0
um.bucket_size(13): 0
um.bucket_size(14): 0
um.bucket_size(15): 1
um.bucket_size(16): 0
um.bucket_size(17): 0
um.bucket_size(18): 0
um.bucket_size(19): 0
um.bucket_size(20): 0
um.bucket_size(21): 0
um.bucket_size(22): 0
um.bucket_size(23): 0
um.bucket_size(24): 0
um.bucket_size(25): 0
um.bucket_size(26): 0
um.bucket_size(27): 0
um.bucket_size(28): 0
um.bucket_size(29): 0
um.bucket_size(30): 0
um.bucket_size(31): 0
um.bucket_size(32): 0
um.bucket_size(33): 0
um.bucket_size(34): 0
um.bucket_size(35): 0
um.bucket_size(36): 0
um.bucket_size(37): 0
um.bucket_size(38): 1
um.bucket_size(39): 0
um.bucket_size(40): 0
um.bucket_size(41): 0
um.bucket_size(42): 0
um.bucket_size(43): 0
um.bucket_size(44): 0
um.bucket_size(45): 0
um.bucket_size(46): 1
um.bucket_size(47): 0
um.bucket_size(48): 0
um.bucket_size(49): 0
um.bucket_size(50): 0
um.bucket_size(51): 0
um.bucket_size(52): 0
um.bucket_size(53): 0
um.bucket_size(54): 0
um.bucket_size(55): 0
um.bucket_size(56): 0
um.bucket_size(57): 0
um.bucket_size(58): 0
um.bucket_size(59): 0
um.bucket_size(60): 1
um.bucket_size(61): 0
um.bucket_size(62): 0
um.bucket_size(63): 0
um.load_factor(): 0.09375
um.max_load_factor(): 1
[find("Jul")]
7 was found
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment