Home | History | Annotate | Download | only in multiset.cons
      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 multiset
     13 
     14 // template <class InputIterator>
     15 //     multiset(InputIterator first, InputIterator last);
     16 
     17 #include <set>
     18 #include <cassert>
     19 
     20 #include "test_iterators.h"
     21 #include "min_allocator.h"
     22 
     23 int main()
     24 {
     25     {
     26     typedef int V;
     27     V ar[] =
     28     {
     29         1,
     30         1,
     31         1,
     32         2,
     33         2,
     34         2,
     35         3,
     36         3,
     37         3
     38     };
     39     std::multiset<V> m(input_iterator<const int*>(ar),
     40                   input_iterator<const int*>(ar+sizeof(ar)/sizeof(ar[0])));
     41     assert(m.size() == 9);
     42     assert(distance(m.begin(), m.end()) == 9);
     43     assert(*next(m.begin(), 0) == 1);
     44     assert(*next(m.begin(), 1) == 1);
     45     assert(*next(m.begin(), 2) == 1);
     46     assert(*next(m.begin(), 3) == 2);
     47     assert(*next(m.begin(), 4) == 2);
     48     assert(*next(m.begin(), 5) == 2);
     49     assert(*next(m.begin(), 6) == 3);
     50     assert(*next(m.begin(), 7) == 3);
     51     assert(*next(m.begin(), 8) == 3);
     52     }
     53 #if TEST_STD_VER >= 11
     54     {
     55     typedef int V;
     56     V ar[] =
     57     {
     58         1,
     59         1,
     60         1,
     61         2,
     62         2,
     63         2,
     64         3,
     65         3,
     66         3
     67     };
     68     std::multiset<V, std::less<V>, min_allocator<V>> m(input_iterator<const int*>(ar),
     69                   input_iterator<const int*>(ar+sizeof(ar)/sizeof(ar[0])));
     70     assert(m.size() == 9);
     71     assert(distance(m.begin(), m.end()) == 9);
     72     assert(*next(m.begin(), 0) == 1);
     73     assert(*next(m.begin(), 1) == 1);
     74     assert(*next(m.begin(), 2) == 1);
     75     assert(*next(m.begin(), 3) == 2);
     76     assert(*next(m.begin(), 4) == 2);
     77     assert(*next(m.begin(), 5) == 2);
     78     assert(*next(m.begin(), 6) == 3);
     79     assert(*next(m.begin(), 7) == 3);
     80     assert(*next(m.begin(), 8) == 3);
     81     }
     82 #endif
     83 }
     84