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