diff options
author | 2021-11-30 14:02:51 -0800 | |
---|---|---|
committer | 2021-12-01 13:14:03 -0500 | |
commit | cad715dbf375a336fcb0b2b0ef57fc2b7a1b0b4b (patch) | |
tree | 43c6ab9076b6d72f1138004a4d972db785eda143 /absl/container/btree_set.h | |
parent | 3e1983c5c07eb8a43ad030e770cbae023a470a04 (diff) |
Export of internal Abseil changes
--
e2a571b818faaec4185426a8cf71fd2970674423 by Matt Kulukundis <kfm@google.com>:
Fix missed use of old RTTI macro
PiperOrigin-RevId: 413239579
--
e3c15a3fe0a4e44d6e08d69ad912b2245a403bd6 by Derek Mauro <dmauro@google.com>:
Makes erase_if return the number of erased elements for compatibility
with C++20
https://en.cppreference.com/w/cpp/container/unordered_map/erase_if
This may technically be an API break, but no actual breaks were found
in Google code. Fixes to open source code should be trivial.
Closes #1065
PiperOrigin-RevId: 413204392
--
c1fb1ddbc2def3f3d177e5b80b9934bdbb7b16fc by Matt Kulukundis <kfm@google.com>:
Consolidate to a single HAS_RTTI macro
PiperOrigin-RevId: 413169336
GitOrigin-RevId: e2a571b818faaec4185426a8cf71fd2970674423
Change-Id: I74b78ebd5fc172e3f5fcbd13a58cf53f7b250ae9
Diffstat (limited to 'absl/container/btree_set.h')
-rw-r--r-- | absl/container/btree_set.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/absl/container/btree_set.h b/absl/container/btree_set.h index 8c96e0ed..2c217d8f 100644 --- a/absl/container/btree_set.h +++ b/absl/container/btree_set.h @@ -398,8 +398,11 @@ void swap(btree_set<K, C, A> &x, btree_set<K, C, A> &y) { // absl::erase_if(absl::btree_set<>, Pred) // // Erases all elements that satisfy the predicate pred from the container. +// Returns the number of erased elements. template <typename K, typename C, typename A, typename Pred> -void erase_if(btree_set<K, C, A> &set, Pred pred) { +typename btree_set<K, C, A>::size_type erase_if(btree_set<K, C, A> &set, + Pred pred) { + const auto initial_size = set.size(); for (auto it = set.begin(); it != set.end();) { if (pred(*it)) { it = set.erase(it); @@ -407,6 +410,7 @@ void erase_if(btree_set<K, C, A> &set, Pred pred) { ++it; } } + return initial_size - set.size(); } // absl::btree_multiset<> @@ -724,8 +728,11 @@ void swap(btree_multiset<K, C, A> &x, btree_multiset<K, C, A> &y) { // absl::erase_if(absl::btree_multiset<>, Pred) // // Erases all elements that satisfy the predicate pred from the container. +// Returns the number of erased elements. template <typename K, typename C, typename A, typename Pred> -void erase_if(btree_multiset<K, C, A> &set, Pred pred) { +typename btree_multiset<K, C, A>::size_type erase_if( + btree_multiset<K, C, A> & set, Pred pred) { + const auto initial_size = set.size(); for (auto it = set.begin(); it != set.end();) { if (pred(*it)) { it = set.erase(it); @@ -733,6 +740,7 @@ void erase_if(btree_multiset<K, C, A> &set, Pred pred) { ++it; } } + return initial_size - set.size(); } namespace container_internal { |