insert_iter_value.pass.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 insert(const_iterator position, const value_type& x);
  11. #include <vector>
  12. #include <cassert>
  13. #include <cstddef>
  14. #include "test_macros.h"
  15. #include "min_allocator.h"
  16. int main(int, char**)
  17. {
  18. {
  19. std::vector<bool> v(100);
  20. std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 1);
  21. assert(v.size() == 101);
  22. assert(i == v.begin() + 10);
  23. std::size_t j;
  24. for (j = 0; j < 10; ++j)
  25. assert(v[j] == 0);
  26. assert(v[j] == 1);
  27. for (++j; j < v.size(); ++j)
  28. assert(v[j] == 0);
  29. }
  30. {
  31. std::vector<bool> v(100);
  32. while(v.size() < v.capacity()) v.push_back(false);
  33. size_t sz = v.size();
  34. std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 1);
  35. assert(v.size() == sz + 1);
  36. assert(i == v.begin() + 10);
  37. std::size_t j;
  38. for (j = 0; j < 10; ++j)
  39. assert(v[j] == 0);
  40. assert(v[j] == 1);
  41. for (++j; j < v.size(); ++j)
  42. assert(v[j] == 0);
  43. }
  44. {
  45. std::vector<bool> v(100);
  46. while(v.size() < v.capacity()) v.push_back(false);
  47. v.pop_back(); v.pop_back();
  48. size_t sz = v.size();
  49. std::vector<bool>::iterator i = v.insert(v.cbegin() + 10, 1);
  50. assert(v.size() == sz + 1);
  51. assert(i == v.begin() + 10);
  52. std::size_t j;
  53. for (j = 0; j < 10; ++j)
  54. assert(v[j] == 0);
  55. assert(v[j] == 1);
  56. for (++j; j < v.size(); ++j)
  57. assert(v[j] == 0);
  58. }
  59. #if TEST_STD_VER >= 11
  60. {
  61. std::vector<bool, min_allocator<bool>> v(100);
  62. std::vector<bool, min_allocator<bool>>::iterator i = v.insert(v.cbegin() + 10, 1);
  63. assert(v.size() == 101);
  64. assert(i == v.begin() + 10);
  65. std::size_t j;
  66. for (j = 0; j < 10; ++j)
  67. assert(v[j] == 0);
  68. assert(v[j] == 1);
  69. for (++j; j < v.size(); ++j)
  70. assert(v[j] == 0);
  71. }
  72. #endif
  73. return 0;
  74. }