@@ -855,17 +855,11 @@ public:
855
855
856
856
private:
857
857
_LIBCPP_HIDE_FROM_ABI const __node_allocator& __node_alloc () const _NOEXCEPT { return __node_alloc_; }
858
- _LIBCPP_HIDE_FROM_ABI __end_node_pointer& __begin_node () _NOEXCEPT { return __begin_node_; }
859
- _LIBCPP_HIDE_FROM_ABI const __end_node_pointer& __begin_node () const _NOEXCEPT { return __begin_node_; }
860
858
861
859
public:
862
860
_LIBCPP_HIDE_FROM_ABI allocator_type __alloc () const _NOEXCEPT { return allocator_type (__node_alloc ()); }
863
861
864
- private:
865
- _LIBCPP_HIDE_FROM_ABI size_type& size () _NOEXCEPT { return __size_; }
866
-
867
- public:
868
- _LIBCPP_HIDE_FROM_ABI const size_type& size () const _NOEXCEPT { return __size_; }
862
+ _LIBCPP_HIDE_FROM_ABI size_type size () const _NOEXCEPT { return __size_; }
869
863
_LIBCPP_HIDE_FROM_ABI value_compare& value_comp () _NOEXCEPT { return __value_comp_; }
870
864
_LIBCPP_HIDE_FROM_ABI const value_compare& value_comp () const _NOEXCEPT { return __value_comp_; }
871
865
@@ -902,8 +896,8 @@ public:
902
896
903
897
_LIBCPP_HIDE_FROM_ABI ~__tree ();
904
898
905
- _LIBCPP_HIDE_FROM_ABI iterator begin () _NOEXCEPT { return iterator (__begin_node () ); }
906
- _LIBCPP_HIDE_FROM_ABI const_iterator begin () const _NOEXCEPT { return const_iterator (__begin_node () ); }
899
+ _LIBCPP_HIDE_FROM_ABI iterator begin () _NOEXCEPT { return iterator (__begin_node_ ); }
900
+ _LIBCPP_HIDE_FROM_ABI const_iterator begin () const _NOEXCEPT { return const_iterator (__begin_node_ ); }
907
901
_LIBCPP_HIDE_FROM_ABI iterator end () _NOEXCEPT { return iterator (__end_node ()); }
908
902
_LIBCPP_HIDE_FROM_ABI const_iterator end () const _NOEXCEPT { return const_iterator (__end_node ()); }
909
903
@@ -1225,30 +1219,30 @@ template <class _Tp, class _Compare, class _Allocator>
1225
1219
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp) _NOEXCEPT_(
1226
1220
is_nothrow_default_constructible<__node_allocator>::value&& is_nothrow_copy_constructible<value_compare>::value)
1227
1221
: __size_(0 ), __value_comp_(__comp) {
1228
- __begin_node () = __end_node ();
1222
+ __begin_node_ = __end_node ();
1229
1223
}
1230
1224
1231
1225
template <class _Tp , class _Compare , class _Allocator >
1232
1226
__tree<_Tp, _Compare, _Allocator>::__tree(const allocator_type& __a)
1233
1227
: __begin_node_(), __node_alloc_(__node_allocator(__a)), __size_(0 ) {
1234
- __begin_node () = __end_node ();
1228
+ __begin_node_ = __end_node ();
1235
1229
}
1236
1230
1237
1231
template <class _Tp , class _Compare , class _Allocator >
1238
1232
__tree<_Tp, _Compare, _Allocator>::__tree(const value_compare& __comp, const allocator_type& __a)
1239
1233
: __begin_node_(), __node_alloc_(__node_allocator(__a)), __size_(0 ), __value_comp_(__comp) {
1240
- __begin_node () = __end_node ();
1234
+ __begin_node_ = __end_node ();
1241
1235
}
1242
1236
1243
- // Precondition: size() != 0
1237
+ // Precondition: __size_ != 0
1244
1238
template <class _Tp , class _Compare , class _Allocator >
1245
1239
typename __tree<_Tp, _Compare, _Allocator>::__node_pointer
1246
1240
__tree<_Tp, _Compare, _Allocator>::_DetachedTreeCache::__detach_from_tree(__tree* __t ) _NOEXCEPT {
1247
- __node_pointer __cache = static_cast <__node_pointer>(__t ->__begin_node () );
1248
- __t ->__begin_node () = __t ->__end_node ();
1241
+ __node_pointer __cache = static_cast <__node_pointer>(__t ->__begin_node_ );
1242
+ __t ->__begin_node_ = __t ->__end_node ();
1249
1243
__t ->__end_node ()->__left_ ->__parent_ = nullptr ;
1250
1244
__t ->__end_node ()->__left_ = nullptr ;
1251
- __t ->size () = 0 ;
1245
+ __t ->__size_ = 0 ;
1252
1246
// __cache->__left_ == nullptr
1253
1247
if (__cache->__right_ != nullptr )
1254
1248
__cache = static_cast <__node_pointer>(__cache->__right_ );
@@ -1300,7 +1294,7 @@ void __tree<_Tp, _Compare, _Allocator>::__assign_unique(_ForwardIterator __first
1300
1294
is_same<_ItValueType, value_type>::value, " __assign_unique may only be called with the containers value type" );
1301
1295
static_assert (
1302
1296
__has_forward_iterator_category<_ForwardIterator>::value, " __assign_unique requires a forward iterator" );
1303
- if (size () != 0 ) {
1297
+ if (__size_ != 0 ) {
1304
1298
_DetachedTreeCache __cache (this );
1305
1299
for (; __cache.__get () != nullptr && __first != __last; ++__first) {
1306
1300
if (__node_assign_unique (*__first, __cache.__get ()).second )
@@ -1318,7 +1312,7 @@ void __tree<_Tp, _Compare, _Allocator>::__assign_multi(_InputIterator __first, _
1318
1312
typedef typename _ITraits::value_type _ItValueType;
1319
1313
static_assert (
1320
1314
is_same<_ItValueType, value_type>::value, " __assign_multi may only be called with the containers value_type" );
1321
- if (size () != 0 ) {
1315
+ if (__size_ != 0 ) {
1322
1316
_DetachedTreeCache __cache (this );
1323
1317
for (; __cache.__get () && __first != __last; ++__first) {
1324
1318
__assign_value (__cache.__get ()->__value_ , *__first);
@@ -1337,7 +1331,7 @@ __tree<_Tp, _Compare, _Allocator>::__tree(const __tree& __t)
1337
1331
__node_alloc_ (__node_traits::select_on_container_copy_construction(__t .__node_alloc())),
1338
1332
__size_(0 ),
1339
1333
__value_comp_(__t .value_comp()) {
1340
- __begin_node () = __end_node ();
1334
+ __begin_node_ = __end_node ();
1341
1335
}
1342
1336
1343
1337
template <class _Tp , class _Compare , class _Allocator >
@@ -1348,33 +1342,33 @@ __tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t) _NOEXCEPT_(
1348
1342
__node_alloc_(std::move(__t .__node_alloc_)),
1349
1343
__size_(__t .__size_),
1350
1344
__value_comp_(std::move(__t .__value_comp_)) {
1351
- if (size () == 0 )
1352
- __begin_node () = __end_node ();
1345
+ if (__size_ == 0 )
1346
+ __begin_node_ = __end_node ();
1353
1347
else {
1354
1348
__end_node ()->__left_ ->__parent_ = static_cast <__end_node_pointer>(__end_node ());
1355
- __t .__begin_node () = __t .__end_node ();
1349
+ __t .__begin_node_ = __t .__end_node ();
1356
1350
__t .__end_node ()->__left_ = nullptr ;
1357
- __t .size () = 0 ;
1351
+ __t .__size_ = 0 ;
1358
1352
}
1359
1353
}
1360
1354
1361
1355
template <class _Tp , class _Compare , class _Allocator >
1362
1356
__tree<_Tp, _Compare, _Allocator>::__tree(__tree&& __t , const allocator_type& __a)
1363
1357
: __node_alloc_(__node_allocator(__a)), __size_(0 ), __value_comp_(std::move(__t .value_comp())) {
1364
1358
if (__a == __t .__alloc ()) {
1365
- if (__t .size () == 0 )
1366
- __begin_node () = __end_node ();
1359
+ if (__t .__size_ == 0 )
1360
+ __begin_node_ = __end_node ();
1367
1361
else {
1368
- __begin_node () = __t .__begin_node () ;
1362
+ __begin_node_ = __t .__begin_node_ ;
1369
1363
__end_node ()->__left_ = __t .__end_node ()->__left_ ;
1370
1364
__end_node ()->__left_ ->__parent_ = static_cast <__end_node_pointer>(__end_node ());
1371
- size () = __t .size () ;
1372
- __t .__begin_node () = __t .__end_node ();
1365
+ __size_ = __t .__size_ ;
1366
+ __t .__begin_node_ = __t .__end_node ();
1373
1367
__t .__end_node ()->__left_ = nullptr ;
1374
- __t .size () = 0 ;
1368
+ __t .__size_ = 0 ;
1375
1369
}
1376
1370
} else {
1377
- __begin_node () = __end_node ();
1371
+ __begin_node_ = __end_node ();
1378
1372
}
1379
1373
}
1380
1374
@@ -1387,13 +1381,13 @@ void __tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, true_type)
1387
1381
__move_assign_alloc (__t );
1388
1382
__size_ = __t .__size_ ;
1389
1383
__value_comp_ = std::move (__t .__value_comp_ );
1390
- if (size () == 0 )
1391
- __begin_node () = __end_node ();
1384
+ if (__size_ == 0 )
1385
+ __begin_node_ = __end_node ();
1392
1386
else {
1393
1387
__end_node ()->__left_ ->__parent_ = static_cast <__end_node_pointer>(__end_node ());
1394
- __t .__begin_node () = __t .__end_node ();
1388
+ __t .__begin_node_ = __t .__end_node ();
1395
1389
__t .__end_node ()->__left_ = nullptr ;
1396
- __t .size () = 0 ;
1390
+ __t .__size_ = 0 ;
1397
1391
}
1398
1392
}
1399
1393
@@ -1404,15 +1398,15 @@ void __tree<_Tp, _Compare, _Allocator>::__move_assign(__tree& __t, false_type) {
1404
1398
else {
1405
1399
value_comp () = std::move (__t .value_comp ());
1406
1400
const_iterator __e = end ();
1407
- if (size () != 0 ) {
1401
+ if (__size_ != 0 ) {
1408
1402
_DetachedTreeCache __cache (this );
1409
- while (__cache.__get () != nullptr && __t .size () != 0 ) {
1403
+ while (__cache.__get () != nullptr && __t .__size_ != 0 ) {
1410
1404
__assign_value (__cache.__get ()->__value_ , std::move (__t .remove (__t .begin ())->__value_ ));
1411
1405
__node_insert_multi (__cache.__get ());
1412
1406
__cache.__advance ();
1413
1407
}
1414
1408
}
1415
- while (__t .size () != 0 ) {
1409
+ while (__t .__size_ != 0 ) {
1416
1410
__insert_multi_from_orphaned_node (__e, std::move (__t .remove (__t .begin ())->__value_ ));
1417
1411
}
1418
1412
}
@@ -1460,21 +1454,21 @@ void __tree<_Tp, _Compare, _Allocator>::swap(__tree& __t)
1460
1454
std::__swap_allocator (__node_alloc (), __t .__node_alloc ());
1461
1455
swap (__size_, __t .__size_ );
1462
1456
swap (__value_comp_, __t .__value_comp_ );
1463
- if (size () == 0 )
1464
- __begin_node () = __end_node ();
1457
+ if (__size_ == 0 )
1458
+ __begin_node_ = __end_node ();
1465
1459
else
1466
1460
__end_node ()->__left_ ->__parent_ = __end_node ();
1467
- if (__t .size () == 0 )
1468
- __t .__begin_node () = __t .__end_node ();
1461
+ if (__t .__size_ == 0 )
1462
+ __t .__begin_node_ = __t .__end_node ();
1469
1463
else
1470
1464
__t .__end_node ()->__left_ ->__parent_ = __t .__end_node ();
1471
1465
}
1472
1466
1473
1467
template <class _Tp , class _Compare , class _Allocator >
1474
1468
void __tree<_Tp, _Compare, _Allocator>::clear() _NOEXCEPT {
1475
1469
destroy (__root ());
1476
- size () = 0 ;
1477
- __begin_node () = __end_node ();
1470
+ __size_ = 0 ;
1471
+ __begin_node_ = __end_node ();
1478
1472
__end_node ()->__left_ = nullptr ;
1479
1473
}
1480
1474
@@ -1664,10 +1658,10 @@ void __tree<_Tp, _Compare, _Allocator>::__insert_node_at(
1664
1658
__new_node->__parent_ = __parent;
1665
1659
// __new_node->__is_black_ is initialized in __tree_balance_after_insert
1666
1660
__child = __new_node;
1667
- if (__begin_node () ->__left_ != nullptr )
1668
- __begin_node () = static_cast <__end_node_pointer>(__begin_node () ->__left_ );
1661
+ if (__begin_node_ ->__left_ != nullptr )
1662
+ __begin_node_ = static_cast <__end_node_pointer>(__begin_node_ ->__left_ );
1669
1663
std::__tree_balance_after_insert (__end_node ()->__left_ , __child);
1670
- ++size () ;
1664
+ ++__size_ ;
1671
1665
}
1672
1666
1673
1667
template <class _Tp , class _Compare , class _Allocator >
@@ -1811,9 +1805,9 @@ typename __tree<_Tp, _Compare, _Allocator>::iterator
1811
1805
__tree<_Tp, _Compare, _Allocator>::__remove_node_pointer(__node_pointer __ptr) _NOEXCEPT {
1812
1806
iterator __r (__ptr);
1813
1807
++__r;
1814
- if (__begin_node () == __ptr)
1815
- __begin_node () = __r.__ptr_ ;
1816
- --size () ;
1808
+ if (__begin_node_ == __ptr)
1809
+ __begin_node_ = __r.__ptr_ ;
1810
+ --__size_ ;
1817
1811
std::__tree_remove (__end_node ()->__left_ , static_cast <__node_base_pointer>(__ptr));
1818
1812
return __r;
1819
1813
}
@@ -2177,13 +2171,13 @@ template <class _Tp, class _Compare, class _Allocator>
2177
2171
typename __tree<_Tp, _Compare, _Allocator>::__node_holder
2178
2172
__tree<_Tp, _Compare, _Allocator>::remove(const_iterator __p) _NOEXCEPT {
2179
2173
__node_pointer __np = __p.__get_np ();
2180
- if (__begin_node () == __p.__ptr_ ) {
2174
+ if (__begin_node_ == __p.__ptr_ ) {
2181
2175
if (__np->__right_ != nullptr )
2182
- __begin_node () = static_cast <__end_node_pointer>(__np->__right_ );
2176
+ __begin_node_ = static_cast <__end_node_pointer>(__np->__right_ );
2183
2177
else
2184
- __begin_node () = static_cast <__end_node_pointer>(__np->__parent_ );
2178
+ __begin_node_ = static_cast <__end_node_pointer>(__np->__parent_ );
2185
2179
}
2186
- --size () ;
2180
+ --__size_ ;
2187
2181
std::__tree_remove (__end_node ()->__left_ , static_cast <__node_base_pointer>(__np));
2188
2182
return __node_holder (__np, _Dp (__node_alloc (), true ));
2189
2183
}
0 commit comments