splice_pos_list_iter_iter.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <list> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// void splice(const_iterator position, list& x, iterator first, iterator last); 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <list> 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int a1[] = {1, 2, 3}; 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant int a2[] = {4, 5, 6}; 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, next(l1.begin()), next(l1.begin())); 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 3); 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 3); 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, next(l1.begin()), next(l1.begin(), 2)); 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 3); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 3); 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l1, next(l1.begin()), next(l1.begin(), 3)); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 3); 49bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 3); 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 53bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 54bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 55bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 56bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 57bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 58bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 59bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 60bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.begin(), l2, next(l2.begin()), l2.end()); 61bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 5); 62bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 5); 63bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 64bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 65bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 66bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 67bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 68bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 69bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 70bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 71bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 72bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 73bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 1); 74bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 75bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(next(l1.begin()), l2, next(l2.begin()), l2.end()); 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 5); 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 5); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 1); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l1(a1, a1+3); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int> l2(a2, a2+3); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant l1.splice(l1.end(), l2, next(l2.begin()), l2.end()); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l1.size() == 5); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(distance(l1.begin(), l1.end()) == 5); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::list<int>::const_iterator i = l1.begin(); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 1); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 2); 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 3); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 5); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant ++i; 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 6); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(l2.size() == 1); 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant i = l2.begin(); 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(*i == 4); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 118