1 // { dg-do run { target c++11 } }
3 // Copyright (C) 2012-2025 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3. If not see
18 // <http://www.gnu.org/licenses/>.
20 #include <unordered_map>
22 #include <testsuite_hooks.h>
26 typedef std::unordered_map
<int, int> Map
;
29 // Make sure max load factor is 1 so that reserved elements is directly
36 m
.reserve(m
.bucket_count());
38 std::size_t bkts
= m
.bucket_count();
41 VERIFY( m
.bucket_count() == bkts
);
43 for (++i
; size_t(i
) < bkts
; ++i
)
45 m
.insert(std::make_pair(i
, i
));
47 // As long as we insert less than the reserved number of elements we
48 // shouldn't experiment any rehash.
49 VERIFY( m
.bucket_count() == bkts
);
51 VERIFY( m
.load_factor() <= m
.max_load_factor() );
54 // One more element should rehash.
55 m
.insert(std::make_pair(i
, i
));
56 VERIFY( m
.bucket_count() != bkts
);
57 VERIFY( m
.load_factor() <= m
.max_load_factor() );