1 //===----------------------------------------------------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // <set> 11 12 // class set 13 14 // iterator begin(); 15 // const_iterator begin() const; 16 // iterator end(); 17 // const_iterator end() const; 18 // 19 // reverse_iterator rbegin(); 20 // const_reverse_iterator rbegin() const; 21 // reverse_iterator rend(); 22 // const_reverse_iterator rend() const; 23 // 24 // const_iterator cbegin() const; 25 // const_iterator cend() const; 26 // const_reverse_iterator crbegin() const; 27 // const_reverse_iterator crend() const; 28 29 #include <set> 30 #include <cassert> 31 32 int main() 33 { 34 { 35 typedef int V; 36 V ar[] = 37 { 38 1, 39 1, 40 1, 41 2, 42 2, 43 2, 44 3, 45 3, 46 3, 47 4, 48 4, 49 4, 50 5, 51 5, 52 5, 53 6, 54 6, 55 6, 56 7, 57 7, 58 7, 59 8, 60 8, 61 8 62 }; 63 std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0])); 64 assert(std::distance(m.begin(), m.end()) == m.size()); 65 assert(std::distance(m.rbegin(), m.rend()) == m.size()); 66 std::set<int>::iterator i; 67 i = m.begin(); 68 std::set<int>::const_iterator k = i; 69 assert(i == k); 70 for (int j = 1; j <= m.size(); ++j, ++i) 71 assert(*i == j); 72 } 73 { 74 typedef int V; 75 V ar[] = 76 { 77 1, 78 1, 79 1, 80 2, 81 2, 82 2, 83 3, 84 3, 85 3, 86 4, 87 4, 88 4, 89 5, 90 5, 91 5, 92 6, 93 6, 94 6, 95 7, 96 7, 97 7, 98 8, 99 8, 100 8 101 }; 102 const std::set<int> m(ar, ar+sizeof(ar)/sizeof(ar[0])); 103 assert(std::distance(m.begin(), m.end()) == m.size()); 104 assert(std::distance(m.cbegin(), m.cend()) == m.size()); 105 assert(std::distance(m.rbegin(), m.rend()) == m.size()); 106 assert(std::distance(m.crbegin(), m.crend()) == m.size()); 107 std::set<int, double>::const_iterator i; 108 i = m.begin(); 109 for (int j = 1; j <= m.size(); ++j, ++i) 110 assert(*i == j); 111 } 112 } 113