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 // <list> 11 12 // iterator erase(const_iterator position); 13 14 #include <list> 15 #include <cassert> 16 17 #include "min_allocator.h" 18 19 int main() 20 { 21 { 22 int a1[] = {1, 2, 3}; 23 std::list<int> l1(a1, a1+3); 24 std::list<int>::const_iterator i = l1.begin(); 25 ++i; 26 std::list<int>::iterator j = l1.erase(i); 27 assert(l1.size() == 2); 28 assert(distance(l1.begin(), l1.end()) == 2); 29 assert(*j == 3); 30 assert(*l1.begin() == 1); 31 assert(*next(l1.begin()) == 3); 32 j = l1.erase(j); 33 assert(j == l1.end()); 34 assert(l1.size() == 1); 35 assert(distance(l1.begin(), l1.end()) == 1); 36 assert(*l1.begin() == 1); 37 j = l1.erase(l1.begin()); 38 assert(j == l1.end()); 39 assert(l1.size() == 0); 40 assert(distance(l1.begin(), l1.end()) == 0); 41 } 42 #if __cplusplus >= 201103L 43 { 44 int a1[] = {1, 2, 3}; 45 std::list<int, min_allocator<int>> l1(a1, a1+3); 46 std::list<int, min_allocator<int>>::const_iterator i = l1.begin(); 47 ++i; 48 std::list<int, min_allocator<int>>::iterator j = l1.erase(i); 49 assert(l1.size() == 2); 50 assert(distance(l1.begin(), l1.end()) == 2); 51 assert(*j == 3); 52 assert(*l1.begin() == 1); 53 assert(*next(l1.begin()) == 3); 54 j = l1.erase(j); 55 assert(j == l1.end()); 56 assert(l1.size() == 1); 57 assert(distance(l1.begin(), l1.end()) == 1); 58 assert(*l1.begin() == 1); 59 j = l1.erase(l1.begin()); 60 assert(j == l1.end()); 61 assert(l1.size() == 0); 62 assert(distance(l1.begin(), l1.end()) == 0); 63 } 64 #endif 65 } 66