erase_iter_iter.pass.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. // <vector>
  9. // vector<bool>
  10. // iterator erase(const_iterator first, const_iterator last);
  11. #include <vector>
  12. #include <cassert>
  13. #include "test_macros.h"
  14. #include "min_allocator.h"
  15. int main(int, char**)
  16. {
  17. bool a1[] = {1, 0, 1};
  18. {
  19. std::vector<bool> l1(a1, a1+3);
  20. std::vector<bool>::iterator i = l1.erase(l1.cbegin(), l1.cbegin());
  21. assert(l1.size() == 3);
  22. assert(distance(l1.cbegin(), l1.cend()) == 3);
  23. assert(i == l1.begin());
  24. }
  25. {
  26. std::vector<bool> l1(a1, a1+3);
  27. std::vector<bool>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin()));
  28. assert(l1.size() == 2);
  29. assert(distance(l1.cbegin(), l1.cend()) == 2);
  30. assert(i == l1.begin());
  31. assert(l1 == std::vector<bool>(a1+1, a1+3));
  32. }
  33. {
  34. std::vector<bool> l1(a1, a1+3);
  35. std::vector<bool>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin(), 2));
  36. assert(l1.size() == 1);
  37. assert(distance(l1.cbegin(), l1.cend()) == 1);
  38. assert(i == l1.begin());
  39. assert(l1 == std::vector<bool>(a1+2, a1+3));
  40. }
  41. {
  42. std::vector<bool> l1(a1, a1+3);
  43. std::vector<bool>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin(), 3));
  44. assert(l1.size() == 0);
  45. assert(distance(l1.cbegin(), l1.cend()) == 0);
  46. assert(i == l1.begin());
  47. }
  48. #if TEST_STD_VER >= 11
  49. {
  50. std::vector<bool, min_allocator<bool>> l1(a1, a1+3);
  51. std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), l1.cbegin());
  52. assert(l1.size() == 3);
  53. assert(distance(l1.cbegin(), l1.cend()) == 3);
  54. assert(i == l1.begin());
  55. }
  56. {
  57. std::vector<bool, min_allocator<bool>> l1(a1, a1+3);
  58. std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin()));
  59. assert(l1.size() == 2);
  60. assert(distance(l1.cbegin(), l1.cend()) == 2);
  61. assert(i == l1.begin());
  62. assert((l1 == std::vector<bool, min_allocator<bool>>(a1+1, a1+3)));
  63. }
  64. {
  65. std::vector<bool, min_allocator<bool>> l1(a1, a1+3);
  66. std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin(), 2));
  67. assert(l1.size() == 1);
  68. assert(distance(l1.cbegin(), l1.cend()) == 1);
  69. assert(i == l1.begin());
  70. assert((l1 == std::vector<bool, min_allocator<bool>>(a1+2, a1+3)));
  71. }
  72. {
  73. std::vector<bool, min_allocator<bool>> l1(a1, a1+3);
  74. std::vector<bool, min_allocator<bool>>::iterator i = l1.erase(l1.cbegin(), next(l1.cbegin(), 3));
  75. assert(l1.size() == 0);
  76. assert(distance(l1.cbegin(), l1.cend()) == 0);
  77. assert(i == l1.begin());
  78. }
  79. #endif
  80. return 0;
  81. }