iterator.pass.cpp revision 211f0ee1be4a4eaa0fab353904a8986af3f39e50
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// 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 32int 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::multiset<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::multiset<int>::iterator i; 67 i = m.begin(); 68 std::multiset<int>::const_iterator k = i; 69 assert(i == k); 70 for (int j = 1; j <= 8; ++j) 71 for (int k = 0; k < 3; ++k, ++i) 72 assert(*i == j); 73 } 74 { 75 typedef int V; 76 V ar[] = 77 { 78 1, 79 1, 80 1, 81 2, 82 2, 83 2, 84 3, 85 3, 86 3, 87 4, 88 4, 89 4, 90 5, 91 5, 92 5, 93 6, 94 6, 95 6, 96 7, 97 7, 98 7, 99 8, 100 8, 101 8 102 }; 103 const std::multiset<int> m(ar, ar+sizeof(ar)/sizeof(ar[0])); 104 assert(std::distance(m.begin(), m.end()) == m.size()); 105 assert(std::distance(m.cbegin(), m.cend()) == m.size()); 106 assert(std::distance(m.rbegin(), m.rend()) == m.size()); 107 assert(std::distance(m.crbegin(), m.crend()) == m.size()); 108 std::multiset<int, double>::const_iterator i; 109 i = m.begin(); 110 for (int j = 1; j <= 8; ++j) 111 for (int k = 0; k < 3; ++k, ++i) 112 assert(*i == j); 113 } 114} 115