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 // <map> 11 12 // class multimap 13 14 // void swap(multimap& m); 15 16 #include <map> 17 #include <cassert> 18 19 int main() 20 { 21 typedef std::pair<const int, double> V; 22 typedef std::multimap<int, double> M; 23 { 24 V ar1[] = 25 { 26 }; 27 V ar2[] = 28 { 29 }; 30 M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0])); 31 M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0])); 32 M m1_save = m1; 33 M m2_save = m2; 34 m1.swap(m2); 35 assert(m1 == m2_save); 36 assert(m2 == m1_save); 37 } 38 { 39 V ar1[] = 40 { 41 }; 42 V ar2[] = 43 { 44 V(5, 5), 45 V(6, 6), 46 V(7, 7), 47 V(8, 8), 48 V(9, 9), 49 V(10, 10), 50 V(11, 11), 51 V(12, 12) 52 }; 53 M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0])); 54 M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0])); 55 M m1_save = m1; 56 M m2_save = m2; 57 m1.swap(m2); 58 assert(m1 == m2_save); 59 assert(m2 == m1_save); 60 } 61 { 62 V ar1[] = 63 { 64 V(1, 1), 65 V(2, 2), 66 V(3, 3), 67 V(4, 4) 68 }; 69 V ar2[] = 70 { 71 }; 72 M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0])); 73 M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0])); 74 M m1_save = m1; 75 M m2_save = m2; 76 m1.swap(m2); 77 assert(m1 == m2_save); 78 assert(m2 == m1_save); 79 } 80 { 81 V ar1[] = 82 { 83 V(1, 1), 84 V(2, 2), 85 V(3, 3), 86 V(4, 4) 87 }; 88 V ar2[] = 89 { 90 V(5, 5), 91 V(6, 6), 92 V(7, 7), 93 V(8, 8), 94 V(9, 9), 95 V(10, 10), 96 V(11, 11), 97 V(12, 12) 98 }; 99 M m1(ar1, ar1+sizeof(ar1)/sizeof(ar1[0])); 100 M m2(ar2, ar2+sizeof(ar2)/sizeof(ar2[0])); 101 M m1_save = m1; 102 M m2_save = m2; 103 m1.swap(m2); 104 assert(m1 == m2_save); 105 assert(m2 == m1_save); 106 } 107 } 108