13 #define MSVC2010_COMPATIBLE 1
16 #define MSVC2013_COMPATIBLE 1
19 #if (defined(__GNUC__) || defined(__GNUG__))
20 #define GPP_COMPATIBLE 1
21 #if ((5 > __GNUC__) && (!defined(__clang__)))
22 #define GPP4P8_COMPATIBLE 1
28 #ifdef MSE_MSEVECTOR_USE_MSE_PRIMITIVES
35 #include <unordered_map>
40 #ifdef MSE_CUSTOM_THROW_DEFINITION
42 #define MSE_THROW(x) MSE_CUSTOM_THROW_DEFINITION(x)
44 #define MSE_THROW(x) throw(x)
49 #ifdef MSE_MSEVECTOR_USE_MSE_PRIMITIVES
53 #define msev_as_a_size_t as_a_size_t
55 #if SIZE_MAX <= ULONG_MAX
56 #define MSE_MSEVECTOR_BASE_INTEGER_TYPE long int
58 #define MSE_MSEVECTOR_BASE_INTEGER_TYPE long long int
69 using std::range_error::range_error;
72 using std::logic_error::logic_error;
77 template<
typename _Ty>
85 #ifndef MSE_DISABLE_MSEAR_POINTER_CHECKS
91 #ifndef MSE_DISABLE_MSEAR_POINTER_CHECKS
103 bool operator!=(
const _Ty* _Right_cref)
const {
return (!((*
this) == _Right_cref)); }
106 operator bool()
const {
return (
m_ptr !=
nullptr); }
108 operator _Ty*()
const {
return m_ptr; }
114 #define _XSTD ::std::
117 template<
class _Ty, _Ty _Val>
131 template<
class _Iter>
136 template<
typename _InIter>
138 std::is_convertible<typename std::iterator_traits<_InIter>::iterator_category, std::input_iterator_tag>::value
149 template<
class _Ty,
class _A = std::allocator<_Ty> >
181 typedef typename base_class::const_iterator
_It;
195 base_class::operator =(_X);
212 auto original_capacity =
msev_size_t((*this).capacity());
216 auto new_capacity =
msev_size_t((*this).capacity());
217 bool realloc_occured = (new_capacity != original_capacity);
218 if (realloc_occured) {
223 auto original_capacity =
msev_size_t((*this).capacity());
225 base_class::shrink_to_fit();
227 auto new_capacity =
msev_size_t((*this).capacity());
228 bool realloc_occured = (new_capacity != original_capacity);
229 if (realloc_occured) {
235 auto original_capacity =
msev_size_t((*this).capacity());
236 bool shrinking = (_N < original_size);
245 auto new_capacity =
msev_size_t((*this).capacity());
246 bool realloc_occured = (new_capacity != original_capacity);
247 if (realloc_occured) {
257 typename base_class::reference
front() {
259 return base_class::front();
261 typename base_class::const_reference
front()
const {
263 return base_class::front();
265 typename base_class::reference
back() {
267 return base_class::back();
269 typename base_class::const_reference
back()
const {
271 return base_class::back();
279 auto original_capacity =
msev_size_t((*this).capacity());
284 assert((original_size + 1) ==
msev_size_t((*this).size()));
286 auto new_capacity =
msev_size_t((*this).capacity());
287 bool realloc_occured = (new_capacity != original_capacity);
288 if (realloc_occured) {
295 base_class::push_back(_X);
299 auto original_capacity =
msev_size_t((*this).capacity());
301 base_class::push_back(_X);
304 assert((original_size + 1) ==
msev_size_t((*this).size()));
306 auto new_capacity =
msev_size_t((*this).capacity());
307 bool realloc_occured = (new_capacity != original_capacity);
308 if (realloc_occured) {
315 base_class::pop_back();
319 auto original_capacity =
msev_size_t((*this).capacity());
322 base_class::pop_back();
325 assert((original_size - 1) ==
msev_size_t((*this).size()));
328 auto new_capacity =
msev_size_t((*this).capacity());
329 bool realloc_occured = (new_capacity != original_capacity);
330 if (realloc_occured) {
336 base_class::assign(_F, _L);
340 template<
class _Iter>
342 base_class::assign(_First, _Last);
351 typename base_class::iterator
insert(
typename base_class::const_iterator _P, _Ty&& _X) {
354 typename base_class::iterator
insert(
typename base_class::const_iterator _P,
const _Ty& _X = _Ty()) {
356 typename base_class::iterator retval = base_class::insert(_P, _X);
361 msev_int di = std::distance(base_class::cbegin(), _P);
366 auto original_capacity =
msev_size_t((*this).capacity());
368 typename base_class::iterator retval = base_class::insert(_P, _X);
371 assert((original_size + 1) ==
msev_size_t((*this).size()));
372 assert(di == std::distance(base_class::begin(), retval));
374 auto new_capacity =
msev_size_t((*this).capacity());
375 bool realloc_occured = (new_capacity != original_capacity);
376 if (realloc_occured) {
383 #if !(defined(GPP4P8_COMPATIBLE))
384 typename base_class::iterator
insert(
typename base_class::const_iterator _P,
size_type _M,
const _Ty& _X) {
386 typename base_class::iterator retval = base_class::insert(_P,
msev_as_a_size_t(_M), _X);
391 msev_int di = std::distance(base_class::cbegin(), _P);
396 auto original_capacity =
msev_size_t((*this).capacity());
398 typename base_class::iterator retval = base_class::insert(_P,
msev_as_a_size_t(_M), _X);
401 assert((original_size + _M) ==
msev_size_t((*this).size()));
402 assert(di == std::distance(base_class::begin(), retval));
404 auto new_capacity =
msev_size_t((*this).capacity());
405 bool realloc_occured = (new_capacity != original_capacity);
406 if (realloc_occured) {
415 typename base_class::iterator
insert(
typename base_class::const_iterator _Where, _Iter _First, _Iter _Last) {
417 auto retval = base_class::insert(_Where, _First, _Last);
422 msev_int di = std::distance(base_class::cbegin(), _Where);
426 auto _M =
msev_int(std::distance(_First, _Last));
428 auto original_capacity =
msev_size_t((*this).capacity());
431 auto retval = base_class::insert(_Where, _First, _Last);
434 assert((original_size + _M) ==
msev_size_t((*this).size()));
435 assert(di == std::distance(base_class::begin(), retval));
437 auto new_capacity =
msev_size_t((*this).capacity());
438 bool realloc_occured = (new_capacity != original_capacity);
439 if (realloc_occured) {
457 auto original_capacity =
msev_size_t((*this).capacity());
460 base_class::insert(_P, _M, _X);
463 assert((original_size + _M) ==
msev_size_t((*this).size()));
466 auto new_capacity =
msev_size_t((*this).capacity());
467 bool realloc_occured = (new_capacity != original_capacity);
468 if (realloc_occured) {
475 ,
class = _mse_RequireInputIter<_Iter> >
void
479 if ((0 > di) || (
msev_size_t((*this).size()) < di)) {
MSE_THROW(msevector_range_error(
"index out of range - typename base_class::iterator insert() - msevector")); }
481 auto _M =
msev_int(std::distance(_First, _Last));
483 auto original_capacity =
msev_size_t((*this).capacity());
487 base_class::insert(_Where, _First, _Last);
490 assert((original_size + _M) ==
msev_size_t((*this).size()));
493 auto new_capacity =
msev_size_t((*this).capacity());
494 bool realloc_occured = (new_capacity != original_capacity);
495 if (realloc_occured) {
502 template<
class ..._Valty>
506 base_class::emplace_back(std::forward<_Valty>(_Val)...);
511 auto original_capacity =
msev_size_t((*this).capacity());
513 base_class::emplace_back(std::forward<_Valty>(_Val)...);
516 assert((original_size + 1) ==
msev_size_t((*this).size()));
518 auto new_capacity =
msev_size_t((*this).capacity());
519 bool realloc_occured = (new_capacity != original_capacity);
520 if (realloc_occured) {
525 template<
class ..._Valty>
526 #if !(defined(GPP4P8_COMPATIBLE))
527 typename base_class::iterator
emplace(
typename base_class::const_iterator _Where, _Valty&& ..._Val)
530 typename base_class::iterator
emplace(
typename base_class::iterator _Where, _Valty&& ..._Val)
535 auto retval = base_class::emplace(_Where, std::forward<_Valty>(_Val)...);
541 #if !(defined(GPP4P8_COMPATIBLE))
542 msev_int di = std::distance(base_class::cbegin(), _Where);
551 auto original_capacity =
msev_size_t((*this).capacity());
553 auto retval = base_class::emplace(_Where, std::forward<_Valty>(_Val)...);
556 assert((original_size + 1) ==
msev_size_t((*this).size()));
557 assert(di == std::distance(base_class::begin(), retval));
559 auto new_capacity =
msev_size_t((*this).capacity());
560 bool realloc_occured = (new_capacity != original_capacity);
561 if (realloc_occured) {
567 typename base_class::iterator
erase(
typename base_class::const_iterator _P) {
569 typename base_class::iterator retval = base_class::erase(_P);
574 msev_int di = std::distance(base_class::cbegin(), _P);
579 auto original_capacity =
msev_size_t((*this).capacity());
581 if (base_class::end() == _P) {
MSE_THROW(
msevector_range_error(
"invalid argument - typename base_class::iterator erase(typename base_class::const_iterator _P) - msevector")); }
582 typename base_class::iterator retval = base_class::erase(_P);
585 assert((original_size - 1) ==
msev_size_t((*this).size()));
586 assert(di == std::distance(base_class::begin(), retval));
591 auto new_capacity =
msev_size_t((*this).capacity());
592 bool realloc_occured = (new_capacity != original_capacity);
593 if (realloc_occured) {
599 typename base_class::iterator
erase(
typename base_class::const_iterator _F,
typename base_class::const_iterator _L) {
601 typename base_class::iterator retval = base_class::erase(_F, _L);
606 msev_int di = std::distance(base_class::cbegin(), _F);
609 msev_int di2 = std::distance(base_class::cbegin(), _L);
613 auto _M =
msev_int(std::distance(_F, _L));
615 auto original_capacity =
msev_size_t((*this).capacity());
617 if ((base_class::end() == _F)) {
MSE_THROW(
msevector_range_error(
"invalid argument - typename base_class::iterator erase(typename base_class::iterator _F, typename base_class::iterator _L) - msevector")); }
618 typename base_class::iterator retval = base_class::erase(_F, _L);
621 assert((original_size - _M) ==
msev_size_t((*this).size()));
622 assert(di == std::distance(base_class::begin(), retval));
629 auto new_capacity =
msev_size_t((*this).capacity());
630 bool realloc_occured = (new_capacity != original_capacity);
631 if (realloc_occured) {
643 base_class::swap(_X);
653 const _A& _Al = _A())
662 void assign(
_XSTD initializer_list<typename base_class::value_type> _Ilist) {
663 base_class::assign(_Ilist);
667 #if defined(GPP4P8_COMPATIBLE)
669 void insert(
typename base_class::iterator _Where,
_XSTD initializer_list<typename base_class::value_type> _Ilist) {
674 auto _M = _Ilist.size();
676 auto original_capacity =
msev_size_t((*this).capacity());
678 base_class::insert(_Where, _Ilist);
681 assert((original_size + _M) ==
msev_size_t((*this).size()));
684 auto new_capacity =
msev_size_t((*this).capacity());
685 bool realloc_occured = (new_capacity != original_capacity);
686 if (realloc_occured) {
692 typename base_class::iterator
insert(
typename base_class::const_iterator _Where,
_XSTD initializer_list<typename base_class::value_type> _Ilist) {
694 auto retval = base_class::insert(_Where, _Ilist);
699 msev_int di = std::distance(base_class::cbegin(), _Where);
703 auto _M = _Ilist.size();
705 auto original_capacity =
msev_size_t((*this).capacity());
707 auto retval = base_class::insert(_Where, _Ilist);
710 assert((original_size + _M) ==
msev_size_t((*this).size()));
711 assert(di == std::distance(base_class::begin(), retval));
713 auto new_capacity =
msev_size_t((*this).capacity());
714 bool realloc_occured = (new_capacity != original_capacity);
715 if (realloc_occured) {
732 typedef typename base_class::const_iterator::value_type
value_type;
736 typedef typename base_class::const_iterator::pointer
pointer;
738 typedef typename base_class::const_iterator::reference
reference;
744 else { assert(!((1 <=
m_owner_cptr->size()) && (m_index < m_owner_cptr->
size())));
return false; }
748 else {
return false; }
751 if (0 ==
m_index) {
return true; }
752 else {
return false; }
774 (*this).m_points_to_an_item =
false;
785 (*this).m_points_to_an_item =
true;
803 (*this).m_points_to_an_item =
false;
806 (*this).m_points_to_an_item =
true;
821 if ((rhs.
m_owner_cptr) != ((*this).m_owner_cptr)) {
MSE_THROW(
msevector_range_error(
"invalid argument - difference_type operator-(const mm_const_iterator_type &rhs) const - msevector::mm_const_iterator_type")); }
859 if (((*this).m_owner_cptr) == (_Right_cref.
m_owner_cptr)) {
860 assert((*this).m_owner_cptr->size() >= _Right_cref.
m_index);
862 (*this).m_index = _Right_cref.
m_index;
865 MSE_THROW(
msevector_range_error(
"doesn't seem to be a valid assignment value - mm_const_iterator_type& operator=(const typename base_class::iterator& _Right_cref) - mm_const_iterator_type - msevector"));
870 if (((*this).m_owner_cptr) != (_Right_cref.
m_owner_cptr)) {
MSE_THROW(
msevector_range_error(
"invalid argument - mm_const_iterator_type& operator==(const mm_const_iterator_type& _Right) - mm_const_iterator_type - msevector")); }
875 if (((*this).m_owner_cptr) != (_Right.
m_owner_cptr)) {
MSE_THROW(
msevector_range_error(
"invalid argument - mm_const_iterator_type& operator<(const mm_const_iterator_type& _Right) - mm_const_iterator_type - msevector")); }
882 (*this) = _Right_cref;
885 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
890 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
891 auto new_index = (*this).m_index + shift;
892 if ((0 > new_index) || (
m_owner_cptr->size() < new_index)) {
897 (*this).sync_const_iterator_to_index();
904 operator typename base_class::const_iterator()
const {
905 typename base_class::const_iterator retval = (*m_owner_cptr).cbegin();
928 typedef typename base_class::iterator::value_type
value_type;
932 typedef typename base_class::iterator::pointer
pointer;
933 typedef typename base_class::iterator::reference
reference;
938 else { assert(!((1 <=
m_owner_ptr->size()) && (m_index < m_owner_ptr->
size())));
return false; }
942 else {
return false; }
945 if (0 ==
m_index) {
return true; }
946 else {
return false; }
968 (*this).m_points_to_an_item =
false;
979 (*this).m_points_to_an_item =
true;
997 (*this).m_points_to_an_item =
false;
1000 (*this).m_points_to_an_item =
true;
1053 if (((*this).m_owner_ptr) == (_Right_cref.
m_owner_ptr)) {
1054 assert((*this).m_owner_ptr->size() >= _Right_cref.
m_index);
1056 (*this).m_index = _Right_cref.
m_index;
1059 MSE_THROW(
msevector_range_error(
"doesn't seem to be a valid assignment value - mm_iterator_type& operator=(const typename base_class::iterator& _Right_cref) - mm_const_iterator_type - msevector"));
1064 if (((*this).m_owner_ptr) != (_Right_cref.
m_owner_ptr)) {
MSE_THROW(
msevector_range_error(
"invalid argument - mm_iterator_type& operator==(const typename base_class::iterator& _Right) - mm_iterator_type - msevector")); }
1069 if (((*this).m_owner_ptr) != (_Right.
m_owner_ptr)) {
MSE_THROW(
msevector_range_error(
"invalid argument - mm_iterator_type& operator<(const typename base_class::iterator& _Right) - mm_iterator_type - msevector")); }
1076 (*this) = _Right_cref;
1079 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
1084 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
1085 auto new_index = (*this).m_index + shift;
1086 if ((0 > new_index) || (
m_owner_ptr->size() < new_index)) {
1091 (*this).sync_iterator_to_index();
1141 class CMMConstIterators :
public std::unordered_map<CHashKey1, std::shared_ptr<mm_const_iterator_type>> {};
1142 class CMMIterators :
public std::unordered_map<CHashKey1, std::shared_ptr<mm_iterator_type>> {};
1149 operator typename CMMConstIterators::value_type()
const {
return CMMConstIterators::value_type((*this).first, (*this).second); }
1156 operator typename CMMIterators::value_type()
const {
return CMMIterators::value_type((*this).first, (*this).second); }
1170 for (
auto it = (*m_aux_mm_const_iterator_shptrs_ptr).begin(); (*m_aux_mm_const_iterator_shptrs_ptr).end() != it; it++) {
1171 func_obj_ref((*it).second);
1182 for (
auto it = (*m_aux_mm_iterator_shptrs_ptr).begin(); (*m_aux_mm_iterator_shptrs_ptr).end() != it; it++) {
1183 func_obj_ref((*it).second);
1195 static const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [](std::shared_ptr<mm_const_iterator_type>& a) { a->reset(); };
1197 static const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [](std::shared_ptr<mm_iterator_type>& a) { a->reset(); };
1211 const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [start_index, end_index](std::shared_ptr<mm_const_iterator_type>& a) { a->invalidate_inclusive_range(start_index, end_index); };
1213 const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [start_index, end_index](std::shared_ptr<mm_iterator_type>& a) { a->invalidate_inclusive_range(start_index, end_index); };
1217 const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [start_index, end_index, shift](std::shared_ptr<mm_const_iterator_type>& a) { a->shift_inclusive_range(start_index, end_index, shift); };
1219 const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [start_index, end_index, shift](std::shared_ptr<mm_iterator_type>& a) { a->shift_inclusive_range(start_index, end_index, shift); };
1248 auto shptr = std::make_shared<mm_const_iterator_type>(*
m_owner_ptr);
1251 typename CMMConstIterators::value_type new_item(key, shptr);
1253 (*m_aux_mm_const_iterator_shptrs_ptr).insert(new_item);
1264 (*m_aux_mm_const_iterator_shptrs_ptr).insert(new_item);
1275 auto it = (*m_aux_mm_const_iterator_shptrs_ptr).find(handle.
m_key);
1276 if ((*m_aux_mm_const_iterator_shptrs_ptr).end() != it) {
1277 (*m_aux_mm_const_iterator_shptrs_ptr).erase(it);
1281 MSE_THROW(
msevector_range_error(
"invalid handle - void release_aux_mm_const_iterator(mm_const_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1285 int found_index = -1;
1292 if (0 <= found_index) {
1301 MSE_THROW(
msevector_range_error(
"invalid handle - void release_aux_mm_const_iterator(mm_const_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1308 auto shptr = std::make_shared<mm_iterator_type>(*
m_owner_ptr);
1311 typename CMMIterators::value_type new_item(key, shptr);
1313 (*m_aux_mm_iterator_shptrs_ptr).insert(new_item);
1325 (*m_aux_mm_iterator_shptrs_ptr).insert(new_item);
1336 auto it = (*m_aux_mm_iterator_shptrs_ptr).find(handle.
m_key);
1337 if ((*m_aux_mm_iterator_shptrs_ptr).end() != it) {
1338 (*m_aux_mm_iterator_shptrs_ptr).erase(it);
1342 MSE_THROW(
msevector_range_error(
"invalid handle - void release_aux_mm_iterator(mm_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1346 int found_index = -1;
1353 if (0 <= found_index) {
1362 MSE_THROW(
msevector_range_error(
"invalid handle - void release_aux_mm_iterator(mm_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1368 (*m_aux_mm_iterator_shptrs_ptr).clear();
1387 (*m_aux_mm_const_iterator_shptrs_ptr).clear();
1459 m_handle_shptr = std::make_shared<mm_const_iterator_handle_type>(handle);
1463 m_handle_shptr = std::make_shared<mm_const_iterator_handle_type>(handle);
1527 m_handle_shptr = std::make_shared<mm_iterator_handle_type>(handle);
1531 m_handle_shptr = std::make_shared<mm_iterator_handle_type>(handle);
1629 if (
start > end) {
MSE_THROW(
msevector_range_error(
"invalid arguments - void assign(const mm_const_iterator_type &start, const mm_const_iterator_type &end) - msevector")); }
1630 typename base_class::const_iterator _F =
start;
1631 typename base_class::const_iterator _L = end;
1632 (*this).assign(_F, _L);
1637 (*this).assign(first, end);
1647 typename base_class::const_iterator _P = pos;
1648 (*this).insert(_P, _M, _X);
1652 typename base_class::const_iterator _P = pos;
1656 template<
class _Iter
1662 typename base_class::const_iterator _P = pos;
1663 (*this).insert(_P,
start, end);
1665 template<
class _Iter
1670 if (first.m_owner_cptr != last.m_owner_cptr) {
MSE_THROW(
msevector_range_error(
"invalid arguments - void insert_before_inclusive(const mm_const_iterator_type &pos, const mm_const_iterator_type &first, const mm_const_iterator_type &last) - msevector")); }
1671 if (!(last.points_to_item())) {
MSE_THROW(
msevector_range_error(
"invalid argument - void insert_before_inclusive(const mm_const_iterator_type &pos, const mm_const_iterator_type &first, const mm_const_iterator_type &last) - msevector")); }
1672 typename base_class::const_iterator _P = pos;
1675 (*this).insert(_P, first, _L);
1679 typename base_class::const_iterator _P = pos;
1680 (*this).insert(_P, _Ilist);
1695 template<
class _Iter
1704 template<
class _Iter
1708 auto end = last; end++;
1718 typename base_class::const_iterator _P = (*this).begin() +
msev_as_a_size_t(pos);
1722 typename base_class::const_iterator _P = (*this).begin() +
msev_as_a_size_t(pos);
1723 (*this).insert(_P, _X);
1726 typename base_class::const_iterator _P = (*this).begin() +
msev_as_a_size_t(pos);
1727 (*this).insert(_P, _M, _X);
1730 typename base_class::const_iterator _P = (*this).begin() +
msev_as_a_size_t(pos);
1731 (*this).insert(_P, _Ilist);
1737 template<
class _Iter
1742 template<
class ..._Valty>
1743 #if !(defined(GPP4P8_COMPATIBLE))
1751 typename base_class::const_iterator _P = pos;
1752 auto retval = base_class::emplace(_P, std::forward<_Valty>(_Val)...);
1754 template<
class ..._Valty>
1755 #if !(defined(GPP4P8_COMPATIBLE))
1769 typename base_class::const_iterator _P = pos;
1775 typename base_class::const_iterator _F =
start;
1776 typename base_class::const_iterator _L = end;
1777 (*this).erase(_F, _L);
1783 typename base_class::const_iterator _F = first;
1784 typename base_class::const_iterator _L = last;
1786 (*this).erase(_F, _L);
1789 auto retval_pos = pos;
1792 ipointer retval = (*this).ibegin();
1797 auto retval_pos = end;
1800 ipointer retval = (*this).ibegin();
1806 return erase(first, end);
1811 typename base_class::const_iterator _P = pos;
1817 ipointer retval = (*this).ibegin();
1827 typedef typename base_class::const_iterator::value_type
value_type;
1831 typedef typename base_class::const_iterator::pointer
pointer;
1833 typedef typename base_class::const_iterator::reference
reference;
1845 else {
MSE_THROW(
msevector_range_error(
"attempt to use invalid ss_const_iterator_type - bool points_to_an_item() const - ss_const_iterator_type - msevector")); }
1853 else {
return false; }
1856 if (0 ==
m_index) {
return true; }
1857 else {
return false; }
1865 MSE_THROW(
msevector_range_error(
"attempt to use invalid ss_const_iterator_type - bool has_previous() const - ss_const_iterator_type - msevector"));
1920 if (rhs.
m_owner_cptr != (*this).m_owner_cptr) {
MSE_THROW(
msevector_range_error(
"invalid argument - difference_type operator-(const ss_const_iterator_type &rhs) const - msevector::ss_const_iterator_type")); }
1955 (*this).m_index = _Right_cref.
m_index;
1971 (*this) = _Right_cref;
1974 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
1979 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
1980 auto new_index = (*this).m_index + shift;
1981 if ((0 > new_index) || (
m_owner_cptr->size() < new_index)) {
1986 (*this).sync_const_iterator_to_index();
1993 operator typename base_class::const_iterator()
const {
1994 typename base_class::const_iterator retval = (*m_owner_cptr).cbegin();
2016 typedef typename base_class::iterator::pointer
pointer;
2025 else {
MSE_THROW(
msevector_range_error(
"attempt to use invalid ss_iterator_type - bool points_to_an_item() const - ss_iterator_type - msevector")); }
2033 else {
return false; }
2036 if (0 ==
m_index) {
return true; }
2037 else {
return false; }
2101 assert(
int((*m_owner_ptr).size()) >= retval);
2134 (*this).m_index = _Right_cref.
m_index;
2150 (*this) = _Right_cref;
2153 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
2158 if ((index_of_first <= (*this).m_index) && (index_of_last >= (*this).m_index)) {
2159 auto new_index = (*this).m_index + shift;
2160 if ((0 > new_index) || (
m_owner_ptr->size() < new_index)) {
2165 (*this).sync_iterator_to_index();
2180 operator typename base_class::iterator()
const {
2181 typename base_class::iterator retval = (*m_owner_ptr).begin();
2253 return (reverse_iterator(
ss_end()));
2258 return (const_reverse_iterator(
ss_end()));
2263 return (reverse_iterator(
ss_begin()));
2268 return (const_reverse_iterator(
ss_begin()));
2278 if (
start > end) {
MSE_THROW(
msevector_range_error(
"invalid arguments - void assign(const ss_const_iterator_type &start, const ss_const_iterator_type &end) - msevector")); }
2279 typename base_class::const_iterator _F =
start;
2280 typename base_class::const_iterator _L = end;
2281 (*this).assign(_F, _L);
2286 (*this).assign(first, end);
2292 typename base_class::const_iterator _P = pos;
2293 (*this).insert(_P, _M, _X);
2302 typename base_class::const_iterator _P = pos;
2309 template<
class _Iter
2317 typename base_class::const_iterator _P = pos;
2318 (*this).insert(_P,
start, end);
2324 if (
start.m_owner_cptr != end.
m_owner_cptr) {
MSE_THROW(
msevector_range_error(
"invalid arguments - void insert_before(const ss_const_iterator_type &pos, const ss_const_iterator_type &start, const ss_const_iterator_type &end) - msevector")); }
2326 if (
start > end) {
MSE_THROW(
msevector_range_error(
"invalid arguments - void insert_before(const ss_const_iterator_type &pos, const ss_const_iterator_type &start, const ss_const_iterator_type &end) - msevector")); }
2327 typename base_class::const_iterator _S =
start;
2328 typename base_class::const_iterator _E = end;
2329 return (*this).insert_before(pos, _S, _E);
2337 typename base_class::const_iterator _P = pos;
2338 (*this).insert(_P,
start, end);
2343 template<
class _Iter
2349 return (*this).insert_before(pos, first, end);
2355 typename base_class::const_iterator _P = pos;
2356 (*this).insert(_P, _Ilist);
2365 template<
class _Iter
2371 template<
class ..._Valty>
2372 #if !(defined(GPP4P8_COMPATIBLE))
2383 typename base_class::const_iterator _P = pos;
2384 (*this).emplace(_P, std::forward<_Valty>(_Val)...);
2394 typename base_class::const_iterator _P = pos;
2405 auto pos_index =
start.position();
2407 typename base_class::const_iterator _F =
start;
2408 typename base_class::const_iterator _L = end;
2409 (*this).erase(_F, _L);
2417 return erase(first, end);
2422 typename base_class::const_iterator _P = pos;
msev_pointer(const msev_pointer< _Ty > &src)
bool operator!=(const msev_pointer _Right_cref) const
bool operator==(const msev_pointer _Right_cref) const
bool operator!=(const _Ty *_Right_cref) const
bool operator==(const _Ty *_Right_cref) const
msev_pointer< _Ty > & operator=(_Ty *ptr)
bool operator!=(const cipointer &_Right_cref) const
cipointer & operator-=(difference_type n)
bool has_previous() const
void regress(difference_type n)
cipointer & operator=(const cipointer &_Right_cref)
std::shared_ptr< mm_const_iterator_handle_type > m_handle_shptr
bool operator>=(const cipointer &_Right) const
bool operator<(const cipointer &_Right) const
bool has_next_item_or_end_marker() const
cipointer operator--(int)
const_reference operator*() const
mm_const_iterator_type & const_item_pointer() const
bool operator>(const cipointer &_Right) const
mm_const_iterator_type::reference reference
mm_const_iterator_type::difference_type difference_type
mm_const_iterator_type & cip() const
difference_type operator-(const cipointer &_Right_cref) const
mm_const_iterator_type::const_reference const_reference
cipointer(const cipointer &src_cref)
void set_to_const_item_pointer(const cipointer &_Right_cref)
cipointer operator-(difference_type n) const
mm_const_iterator_type::const_pointer const_pointer
cipointer & operator+=(difference_type n)
mm_const_iterator_type::value_type value_type
cipointer operator+(difference_type n) const
bool points_to_end_marker() const
cipointer operator++(int)
difference_type distance_type
mm_const_iterator_type::pointer pointer
mm_const_iterator_type::iterator_category iterator_category
bool points_to_an_item() const
const_reference item() const
bool operator<=(const cipointer &_Right) const
const_reference previous_item() const
const_reference operator[](difference_type _Off) const
msev_size_t position() const
const _Myt * m_owner_cptr
bool operator==(const cipointer &_Right_cref) const
bool points_to_beginning() const
cipointer(const _Myt &owner_cref)
const_pointer operator->() const
void advance(difference_type n)
ipointer operator-(difference_type n) const
void advance(difference_type n)
ipointer(const ipointer &src_cref)
bool points_to_end_marker() const
void regress(difference_type n)
mm_iterator_type::value_type value_type
bool points_to_an_item() const
bool operator>(const ipointer &_Right) const
bool operator>=(const ipointer &_Right) const
bool operator==(const ipointer &_Right_cref) const
reference operator[](difference_type _Off) const
mm_iterator_type & item_pointer() const
difference_type distance_type
bool points_to_beginning() const
ipointer operator+(difference_type n) const
reference operator*() const
mm_iterator_type::pointer pointer
reference previous_item() const
bool has_next_item_or_end_marker() const
pointer operator->() const
ipointer & operator+=(difference_type n)
bool operator!=(const ipointer &_Right_cref) const
ipointer & operator-=(difference_type n)
bool has_previous() const
mm_iterator_type::reference reference
mm_iterator_type & ip() const
ipointer & operator=(const ipointer &_Right_cref)
bool operator<=(const ipointer &_Right) const
void set_to_item_pointer(const ipointer &_Right_cref)
difference_type operator-(const ipointer &_Right_cref) const
ipointer(_Myt &owner_ref)
mm_iterator_type::difference_type difference_type
bool operator<(const ipointer &_Right) const
std::shared_ptr< mm_iterator_handle_type > m_handle_shptr
mm_iterator_type::iterator_category iterator_category
msev_size_t position() const
std::shared_ptr< mm_const_iterator_type > m_shptr
mm_const_iterator_handle_type(const CHashKey1 &key_cref, const std::shared_ptr< mm_const_iterator_type > &shptr_cref)
mm_const_iterator_type(const _Myt &owner_cref)
msev_bool m_points_to_an_item
mm_const_iterator_type(const mm_const_iterator_type &src_cref)
const_reference previous_item() const
mm_const_iterator_type operator--(int)
msev_size_t position() const
difference_type operator-(const mm_const_iterator_type &rhs) const
void sync_const_iterator_to_index()
base_class::const_reference const_reference
const_reference item() const
mm_const_iterator_type & operator++()
void set_to_const_item_pointer(const mm_const_iterator_type &_Right_cref)
base_class::const_iterator::reference reference
const_pointer operator->() const
bool has_next_item_or_end_marker() const
mm_const_iterator_type & operator+=(difference_type n)
bool operator<(const mm_const_iterator_type &_Right) const
bool operator==(const mm_const_iterator_type &_Right_cref) const
bool has_previous() const
base_class::const_iterator::iterator_category iterator_category
difference_type distance_type
mm_const_iterator_type & operator=(const mm_const_iterator_type &_Right_cref)
bool operator>(const mm_const_iterator_type &_Right) const
mm_const_iterator_type operator-(difference_type n) const
void invalidate_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last)
mm_const_iterator_type & operator--()
base_class::const_iterator::pointer const_pointer
bool points_to_beginning() const
mm_const_iterator_type & operator-=(difference_type n)
mm_const_iterator_type operator+(difference_type n) const
bool points_to_an_item() const
base_class::const_iterator::pointer pointer
bool operator<=(const mm_const_iterator_type &_Right) const
const_reference operator[](difference_type _Off) const
void regress(difference_type n)
bool operator>=(const mm_const_iterator_type &_Right) const
base_class::const_iterator::value_type value_type
const _Myt * m_owner_cptr
bool operator!=(const mm_const_iterator_type &_Right_cref) const
void advance(difference_type n)
mm_const_iterator_type operator++(int)
bool points_to_end_marker() const
const_reference operator*() const
void shift_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last, msev_int shift)
std::shared_ptr< mm_iterator_type > m_shptr
mm_iterator_handle_type(const CHashKey1 &key_cref, const std::shared_ptr< mm_iterator_type > &shptr_ref)
assignable_CMMConstIterators_value_type()
assignable_CMMConstIterators_value_type & operator=(const typename CMMConstIterators::value_type &rhs)
assignable_CMMConstIterators_value_type(const typename CMMConstIterators::value_type &src)
assignable_CMMIterators_value_type & operator=(const typename CMMIterators::value_type &rhs)
assignable_CMMIterators_value_type(const typename CMMIterators::value_type &src)
assignable_CMMIterators_value_type()
bool mm_const_fast_mode1() const
void release_const_item_pointer(mm_const_iterator_handle_type handle)
mm_iterator_set_type & operator=(const mm_iterator_set_type &src_cref)
int m_fm1_num_mm_iterators
CMMIterators * m_aux_mm_iterator_shptrs_ptr
mm_iterator_handle_type allocate_new_item_pointer()
assignable_CMMIterators_value_type m_fm1_key_mm_it_array[sc_fm1_max_mm_iterators]
CMMConstIterators * m_aux_mm_const_iterator_shptrs_ptr
void apply_to_all_mm_iterator_shptrs(const std::function< void(std::shared_ptr< mm_iterator_type > &)> &func_obj_ref)
void invalidate_inclusive_range(msev_size_t start_index, msev_size_t end_index)
void release_all_const_item_pointers()
static const int sc_fm1_max_mm_iterators
mm_iterator_set_type & operator=(mm_iterator_set_type &&src)
void shift_inclusive_range(msev_size_t start_index, msev_size_t end_index, msev_int shift)
CHashKey1 m_next_available_key
bool mm_fast_mode1() const
mm_const_iterator_handle_type allocate_new_const_item_pointer()
void release_all_item_pointers()
mm_iterator_set_type(const mm_iterator_set_type &&src)
void release_item_pointer(mm_iterator_handle_type handle)
mm_iterator_type & item_pointer(mm_iterator_handle_type handle)
void apply_to_all_mm_const_iterator_shptrs(const std::function< void(std::shared_ptr< mm_const_iterator_type > &)> &func_obj_ref)
assignable_CMMConstIterators_value_type m_fm1_key_mm_const_it_array[sc_fm1_max_mm_iterators]
void sync_iterators_to_index()
mm_iterator_set_type(const mm_iterator_set_type &src)
mm_iterator_set_type(_Myt &owner_ref)
int m_fm1_num_mm_const_iterators
mm_const_iterator_type & const_item_pointer(mm_const_iterator_handle_type handle) const
mm_iterator_type & operator-=(difference_type n)
mm_iterator_type operator+(difference_type n) const
mm_iterator_type & operator++()
void shift_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last, msev_int shift)
base_class::iterator::reference reference
void set_to_item_pointer(const mm_iterator_type &_Right_cref)
base_class::iterator::iterator_category iterator_category
void advance(difference_type n)
reference previous_item() const
mm_iterator_type operator++(int)
void invalidate_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last)
reference operator*() const
bool has_previous() const
reference operator[](difference_type _Off) const
difference_type distance_type
bool operator<=(const mm_iterator_type &_Right) const
mm_iterator_type & operator=(const mm_iterator_type &_Right_cref)
mm_iterator_type & operator+=(difference_type n)
msev_size_t position() const
bool has_next_item_or_end_marker() const
mm_iterator_type operator--(int)
mm_iterator_type(const mm_iterator_type &src_cref)
bool points_to_end_marker() const
bool operator>(const mm_iterator_type &_Right) const
bool points_to_beginning() const
bool operator!=(const mm_iterator_type &_Right_cref) const
mm_iterator_type & operator--()
base_class::iterator::pointer pointer
bool points_to_an_item() const
bool operator>=(const mm_iterator_type &_Right) const
bool operator<(const mm_iterator_type &_Right) const
mm_iterator_type operator-(difference_type n) const
bool operator==(const mm_iterator_type &_Right_cref) const
void sync_iterator_to_index()
difference_type operator-(const mm_iterator_type &rhs) const
msev_bool m_points_to_an_item
mm_iterator_type(_Myt &owner_ref)
base_class::iterator::value_type value_type
pointer operator->() const
void set_to_const_item_pointer(const ss_const_iterator_type &_Right_cref)
bool operator>=(const ss_const_iterator_type &_Right) const
base_class::const_iterator::reference reference
bool operator>(const ss_const_iterator_type &_Right) const
void advance(difference_type n)
msev_pointer< const _Myt > m_owner_cptr
msev_size_t position() const
base_class::const_pointer const_pointer
bool operator!=(const ss_const_iterator_type &_Right_cref) const
base_class::const_iterator::value_type value_type
void shift_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last, msev_int shift)
ss_const_iterator_type operator-(difference_type n) const
base_class::const_iterator::iterator_category iterator_category
bool points_to_an_item() const
ss_const_iterator_type & operator+=(difference_type n)
void sync_const_iterator_to_index()
ss_const_iterator_type & operator--()
ss_const_iterator_type operator+(difference_type n) const
ss_const_iterator_type & operator++()
const_reference operator[](difference_type _Off) const
bool operator==(const ss_const_iterator_type &_Right_cref) const
bool points_to_beginning() const
void regress(difference_type n)
const_reference previous_item() const
bool operator<=(const ss_const_iterator_type &_Right) const
bool operator<(const ss_const_iterator_type &_Right) const
bool points_to_end_marker() const
bool has_next_item_or_end_marker() const
ss_const_iterator_type & operator-=(difference_type n)
difference_type distance_type
base_class::const_iterator::pointer pointer
void assert_valid_index() const
ss_const_iterator_type & operator=(const ss_const_iterator_type &_Right_cref)
ss_const_iterator_type operator++(int)
void invalidate_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last)
base_class::const_reference const_reference
difference_type operator-(const ss_const_iterator_type &rhs) const
const_pointer operator->() const
ss_const_iterator_type operator--(int)
_Myt::difference_type difference_type
const_reference item() const
bool has_previous() const
const_reference operator*() const
ss_iterator_type operator++(int)
base_class::iterator::iterator_category iterator_category
void set_to_item_pointer(const ss_iterator_type &_Right_cref)
pointer operator->() const
ss_iterator_type operator-(difference_type n) const
ss_iterator_type & operator+=(difference_type n)
ss_iterator_type & operator--()
bool has_previous() const
reference operator[](difference_type _Off) const
bool points_to_end_marker() const
ss_iterator_type & operator++()
bool operator<(const ss_iterator_type &_Right) const
msev_pointer< _Myt > m_owner_ptr
base_class::iterator::reference reference
bool operator>=(const ss_iterator_type &_Right) const
void advance(difference_type n)
difference_type operator-(const ss_iterator_type &rhs) const
void regress(difference_type n)
bool has_next_item_or_end_marker() const
void sync_iterator_to_index()
bool points_to_beginning() const
ss_iterator_type & operator=(const ss_iterator_type &_Right_cref)
bool operator==(const ss_iterator_type &_Right_cref) const
ss_iterator_type operator--(int)
reference operator*() const
bool operator>(const ss_iterator_type &_Right) const
bool operator<=(const ss_iterator_type &_Right) const
base_class::iterator::value_type value_type
_Myt::difference_type difference_type
base_class::iterator::pointer pointer
void shift_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last, msev_int shift)
bool points_to_an_item() const
bool operator!=(const ss_iterator_type &_Right_cref) const
msev_size_t position() const
ss_iterator_type operator+(difference_type n) const
reference previous_item() const
ss_iterator_type & operator-=(difference_type n)
difference_type distance_type
void invalidate_inclusive_range(msev_size_t index_of_first, msev_size_t index_of_last)
ss_iterator_type emplace(const ss_const_iterator_type &pos, _Valty &&..._Val)
void release_item_pointer(mm_iterator_handle_type handle) const
mm_const_iterator_handle_type allocate_new_const_item_pointer() const
msevector(const cipointer &start, const cipointer &end, const _A &_Al=_A())
void emplace_back(_Valty &&..._Val)
void assign(size_type _N, const _Ty &_X=_Ty())
void insert_before(const mm_const_iterator_type &pos, _Ty &&_X)
base_class::reference operator[](size_type _P)
void erase(const mm_const_iterator_type &start, const mm_const_iterator_type &end)
msevector(_It _F, _It _L, const _A &_Al=_A())
ss_iterator_type insert(const ss_const_iterator_type &pos, const _Ty *start, const _Ty *&end)
void assign_inclusive(const mm_const_iterator_type &first, const mm_const_iterator_type &last)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, const ss_const_iterator_type &start, const ss_const_iterator_type &end)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, const _Iter &start, const _Iter &end)
ipointer insert(const cipointer &pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
void resize(size_type _N, const _Ty &_X=_Ty())
ss_const_reverse_iterator_type ss_crend() const
void reserve(size_type _Count)
void insert_before(const mm_const_iterator_type &pos, const _Iter &start, const _Iter &end)
ipointer erase(const cipointer &pos)
base_class::const_reference front() const
msevector(const _A &_Al=_A())
std::vector< _Ty, _A > base_class
ipointer insert_before(const cipointer &pos, size_type _M, const _Ty &_X)
ss_iterator_type insert(const ss_const_iterator_type &pos, _Ty &&_X)
void insert_before(msev_size_t pos, const _Ty &_X=_Ty())
ss_iterator_type insert_before(const ss_const_iterator_type &pos, const _Ty *start, const _Ty *end)
base_class::const_pointer const_pointer
base_class::iterator insert(typename base_class::const_iterator _P, const _Ty &_X=_Ty())
void swap(base_class &_X)
ss_const_reverse_iterator_type ss_rbegin() const
ss_iterator_type erase(const ss_const_iterator_type &pos)
msevector(const ss_const_iterator_type &start, const ss_const_iterator_type &end, const _A &_Al=_A())
base_class::iterator insert(typename base_class::const_iterator _P, _Ty &&_X)
ipointer insert(const cipointer &pos, size_type _M, const _Ty &_X)
msevector(base_class &&_X)
void insert_before(msev_size_t pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
base_class::const_iterator _It
base_class::const_reference operator[](size_type _P) const
std::reverse_iterator< ss_const_iterator_type > ss_const_reverse_iterator_type
msevector< _Ty, _A > _Myt
ss_const_reverse_iterator_type ss_rend() const
void insert_before_inclusive(const mm_const_iterator_type &pos, const _Iter &first, const _Iter &last)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
std::reverse_iterator< ss_iterator_type > ss_reverse_iterator_type
cipointer cibegin() const
_Myt & operator=(const _Myt &_X)
void insert_before(const mm_const_iterator_type &pos, size_type _M, const _Ty &_X)
void assign_inclusive(const ss_const_iterator_type &first, const ss_const_iterator_type &last)
msevector(const _Myt &_X)
ipointer erase(const cipointer &start, const cipointer &end)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, size_type _M, const _Ty &_X)
base_class::value_type value_type
ss_const_iterator_type ss_cbegin() const
void insert_before(const mm_const_iterator_type &pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
msevector(_Iter _First, _Iter _Last)
msevector(_Iter _First, _Iter _Last, const _A &_Al)
void assign(_It _F, _It _L)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, const _Ty &_X=_Ty())
ss_reverse_iterator_type ss_rbegin()
ipointer insert_before(const cipointer &pos, const _Iter &start, const _Iter &end)
ipointer emplace(const cipointer &pos, _Valty &&..._Val)
ipointer insert(const cipointer &pos, const _Iter &start, const _Iter &end)
void push_back(const _Ty &_X)
void assign(const ss_const_iterator_type &start, const ss_const_iterator_type &end)
ss_iterator_type ss_end()
_Myt & operator=(const base_class &_X)
ipointer insert_before(const cipointer &pos, _Ty &&_X)
void release_all_const_item_pointers() const
ipointer insert(const cipointer &pos, const _Ty &_X=_Ty())
void assign(_Iter _First, _Iter _Last)
base_class::iterator emplace(typename base_class::const_iterator _Where, _Valty &&..._Val)
ss_const_iterator_type ss_begin() const
msevector(const base_class &_X)
void insert_before(msev_size_t pos, size_t _M, const _Ty &_X)
base_class::const_reference back() const
ss_iterator_type insert(const ss_const_iterator_type &pos, const _Ty &_X=_Ty())
ipointer insert_before(const cipointer &pos, const _Ty &_X=_Ty())
void erase_inclusive(const mm_const_iterator_type &first, const mm_const_iterator_type &last)
void assign(const cipointer &start, const cipointer &end)
base_class::pointer pointer
msevector(const _Ty *_F, const _Ty *_L, const _A &_Al=_A())
void insert_before(msev_size_t pos, _Ty &&_X)
ipointer erase_inclusive(const cipointer &first, const cipointer &last)
msevector(size_type _N, const _Ty &_V, const _A &_Al=_A())
ss_iterator_type insert(const ss_const_iterator_type &pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
ss_iterator_type erase(const ss_const_iterator_type &start, const ss_const_iterator_type &end)
void release_all_item_pointers() const
ss_const_reverse_iterator_type ss_crbegin() const
base_class::reference front()
base_class::reference back()
_Myt & operator=(::std::initializer_list< typename base_class::value_type > _Ilist)
void erase(const mm_const_iterator_type &pos)
ss_iterator_type ss_begin()
_Myt & operator=(_Myt &&_X)
ss_iterator_type insert(const ss_const_iterator_type &pos, size_type _M, const _Ty &_X)
base_class::iterator erase(typename base_class::const_iterator _P)
ss_iterator_type insert_before(const ss_const_iterator_type &pos, _Ty &&_X)
void insert_before(const mm_const_iterator_type &pos, const _Ty &_X=_Ty())
void emplace(const mm_const_iterator_type &pos, _Valty &&..._Val)
ss_iterator_type insert_before_inclusive(const ss_iterator_type &pos, const _Iter &first, const _Iter &last)
mm_iterator_type & item_pointer(mm_iterator_handle_type handle)
void assign(const mm_const_iterator_type &start, const mm_const_iterator_type &end)
msevector(::std::initializer_list< typename base_class::value_type > _Ilist, const _A &_Al=_A())
base_class::iterator insert(typename base_class::const_iterator _Where, ::std::initializer_list< typename base_class::value_type > _Ilist)
ipointer insert(const cipointer &pos, _Ty &&_X)
base_class::iterator insert(typename base_class::const_iterator _P, size_type _M, const _Ty &_X)
mm_const_iterator_type & const_item_pointer(mm_const_iterator_handle_type handle) const
ipointer insert_before_inclusive(const cipointer &pos, const _Iter &first, const _Iter &last)
ss_iterator_type insert(const ss_const_iterator_type &pos, const _Iter &start, const _Iter &end)
base_class::iterator erase(typename base_class::const_iterator _F, typename base_class::const_iterator _L)
ipointer insert_before(const cipointer &pos, ::std::initializer_list< typename base_class::value_type > _Ilist)
void assign(::std::initializer_list< typename base_class::value_type > _Ilist)
ss_reverse_iterator_type ss_rend()
mm_iterator_set_type m_mmitset
mm_iterator_handle_type allocate_new_item_pointer() const
void assign_inclusive(const cipointer &first, const cipointer &last)
base_class::const_reference const_reference
base_class::reference reference
void release_const_item_pointer(mm_const_iterator_handle_type handle) const
void erase_previous_item(const ss_const_iterator_type &pos)
base_class::iterator insert(typename base_class::const_iterator _Where, _Iter _First, _Iter _Last)
ss_const_iterator_type ss_end() const
ipointer erase_previous_item(const cipointer &pos)
ss_iterator_type erase_inclusive(const ss_const_iterator_type &first, const ss_const_iterator_type &last)
void erase_previous_item(const mm_const_iterator_type &pos)
ss_const_iterator_type ss_cend() const
#define MSE_MSEVECTOR_BASE_INTEGER_TYPE
bool move(InputEvent &event)
typename std::enable_if< std::is_convertible< typename std::iterator_traits< _InIter >::iterator_category, std::input_iterator_tag >::value >::type _mse_RequireInputIter
integral_constant< _Ty, _Val > type