Home | History | Annotate | Download | only in set
      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