brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 6b98ceb Raw
63 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <set>10 11// class multiset12 13// template <class InputIterator>14//     multiset(InputIterator first, InputIterator last);15 16#include <set>17#include <cassert>18 19#include "test_macros.h"20#include "test_iterators.h"21#include "min_allocator.h"22 23int main(int, char**) {24  {25    typedef int V;26    V ar[] = {1, 1, 1, 2, 2, 2, 3, 3, 3};27    std::multiset<V> m(28        cpp17_input_iterator<const int*>(ar), cpp17_input_iterator<const int*>(ar + sizeof(ar) / sizeof(ar[0])));29    assert(m.size() == 9);30    assert(std::distance(m.begin(), m.end()) == 9);31    assert(*std::next(m.begin(), 0) == 1);32    assert(*std::next(m.begin(), 1) == 1);33    assert(*std::next(m.begin(), 2) == 1);34    assert(*std::next(m.begin(), 3) == 2);35    assert(*std::next(m.begin(), 4) == 2);36    assert(*std::next(m.begin(), 5) == 2);37    assert(*std::next(m.begin(), 6) == 3);38    assert(*std::next(m.begin(), 7) == 3);39    assert(*std::next(m.begin(), 8) == 3);40  }41#if TEST_STD_VER >= 1142  {43    typedef int V;44    V ar[] = {1, 1, 1, 2, 2, 2, 3, 3, 3};45    std::multiset<V, std::less<V>, min_allocator<V>> m(46        cpp17_input_iterator<const int*>(ar), cpp17_input_iterator<const int*>(ar + sizeof(ar) / sizeof(ar[0])));47    assert(m.size() == 9);48    assert(std::distance(m.begin(), m.end()) == 9);49    assert(*std::next(m.begin(), 0) == 1);50    assert(*std::next(m.begin(), 1) == 1);51    assert(*std::next(m.begin(), 2) == 1);52    assert(*std::next(m.begin(), 3) == 2);53    assert(*std::next(m.begin(), 4) == 2);54    assert(*std::next(m.begin(), 5) == 2);55    assert(*std::next(m.begin(), 6) == 3);56    assert(*std::next(m.begin(), 7) == 3);57    assert(*std::next(m.begin(), 8) == 3);58  }59#endif60 61  return 0;62}63