OSDN Git Service

2006-10-07 Ion Gaztanaga <igaztanaga@gmail.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 7 Oct 2006 08:20:35 +0000 (08:20 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 7 Oct 2006 08:20:35 +0000 (08:20 +0000)
    Paolo Carlini  <pcarlini@suse.de>

* include/bits/stl_tree.h (_Rb_tree<>::erase(const _Key&)): Don't
call std::distance unnecessarily.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117529 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_tree.h

index 057d0eb..f37f19a 100644 (file)
@@ -1,3 +1,9 @@
+2006-10-07  Ion Gaztanaga  <igaztanaga@gmail.com>
+           Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/stl_tree.h (_Rb_tree<>::erase(const _Key&)): Don't
+       call std::distance unnecessarily.
+
 2006-10-06  Paolo Carlini  <pcarlini@suse.de>
 
        PR libstdc++/29368
index e1efe0a..96b7a52 100644 (file)
@@ -1269,10 +1269,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
     erase(const _Key& __x)
     {
-      pair<iterator,iterator> __p = equal_range(__x);
-      size_type __n = std::distance(__p.first, __p.second);
+      pair<iterator, iterator> __p = equal_range(__x);
+      const size_type __old_size = size();
       erase(__p.first, __p.second);
-      return __n;
+      return __old_size - size();
     }
 
   template<typename _Key, typename _Val, typename _KoV,