1 // Copyright (C) 2005-2021 Free Software Foundation, Inc. 2 // 3 // This file is part of the GNU ISO C++ Library. This library is free 4 // software; you can redistribute it and/or modify it under the 5 // terms of the GNU General Public License as published by the 6 // Free Software Foundation; either version 3, or (at your option) 7 // any later version. 8 // 9 // This library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License along 15 // with this library; see the file COPYING3. If not see 16 // <http://www.gnu.org/licenses/>. 17 18 // 6.3 Unordered associative containers 19 20 #include <tr1/unordered_set> 21 #include <testsuite_hooks.h> 22 23 // libstdc++/23465 test01()24void test01() 25 { 26 for (float lf = 0.1; lf < 101.0; lf *= 10.0) 27 for (int size = 1; size <= 6561; size *= 3) 28 { 29 std::tr1::unordered_set<int> us1, us2; 30 typedef std::tr1::unordered_set<int>::local_iterator local_iterator; 31 typedef std::tr1::unordered_set<int>::size_type size_type; 32 33 us1.max_load_factor(lf); 34 35 for (int i = 0; i < size; ++i) 36 us1.insert(i); 37 38 us2 = us1; 39 40 VERIFY( us2.size() == us1.size() ); 41 VERIFY( us2.bucket_count() == us1.bucket_count() ); 42 43 for (size_type b = 0; b < us1.bucket_count(); ++b) 44 { 45 size_type cnt = 0; 46 for (local_iterator it1 = us1.begin(b), it2 = us2.begin(b); 47 it1 != us1.end(b) && it2 != us2.end(b); ++it1, ++it2) 48 { 49 VERIFY( *it1 == *it2 ); 50 ++cnt; 51 } 52 VERIFY( cnt == us1.bucket_size(b) ); 53 } 54 } 55 } 56 main()57int main() 58 { 59 test01(); 60 return 0; 61 } 62