diff --git a/reference/deque/deque/erase_free.md b/reference/deque/deque/erase_free.md index a787bf638e..7b9d7667dc 100644 --- a/reference/deque/deque/erase_free.md +++ b/reference/deque/deque/erase_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove(c.begin(), c.end(), value), c.end()); +auto it = remove(c.begin(), c.end(), value); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove[link /reference/algorithm/remove.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -68,4 +72,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/deque/deque/erase_if_free.md b/reference/deque/deque/erase_if_free.md index f281ad3a62..9ec37a9020 100644 --- a/reference/deque/deque/erase_if_free.md +++ b/reference/deque/deque/erase_if_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove_if(c.begin(), c.end(), pred), c.end()); +auto it = remove_if(c.begin(), c.end(), pred); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove_if[link /reference/algorithm/remove_if.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -68,4 +72,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/forward_list/forward_list/erase_free.md b/reference/forward_list/forward_list/erase_free.md index acd0173187..a5f9a288ec 100644 --- a/reference/forward_list/forward_list/erase_free.md +++ b/reference/forward_list/forward_list/erase_free.md @@ -65,4 +65,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/forward_list/forward_list/erase_if_free.md b/reference/forward_list/forward_list/erase_if_free.md index d08bd2484c..1a25fd4876 100644 --- a/reference/forward_list/forward_list/erase_if_free.md +++ b/reference/forward_list/forward_list/erase_if_free.md @@ -65,4 +65,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/list/list/erase_free.md b/reference/list/list/erase_free.md index 0bb8f1944b..7b7243f575 100644 --- a/reference/list/list/erase_free.md +++ b/reference/list/list/erase_free.md @@ -65,4 +65,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/list/list/erase_if_free.md b/reference/list/list/erase_if_free.md index 8716cc7c50..863915e010 100644 --- a/reference/list/list/erase_if_free.md +++ b/reference/list/list/erase_if_free.md @@ -65,4 +65,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/map/map/erase_if_free.md b/reference/map/map/erase_if_free.md index 18bb85bd07..f0ff43d5ef 100644 --- a/reference/map/map/erase_if_free.md +++ b/reference/map/map/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(map& c, Predicate pred); + typename map::size_type + erase_if(map& c, Predicate pred); } ``` @@ -21,6 +22,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -28,14 +30,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -78,4 +82,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/map/multimap/erase_if_free.md b/reference/map/multimap/erase_if_free.md index c3656cfa98..b891823c58 100644 --- a/reference/map/multimap/erase_if_free.md +++ b/reference/map/multimap/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(multimap& c, Predicate pred); + typename multimap::size_type + erase_if(multimap& c, Predicate pred); } ``` @@ -21,6 +22,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -28,14 +30,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -78,4 +82,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/set/multiset/erase_if_free.md b/reference/set/multiset/erase_if_free.md index 7b9c0088dc..d503543b90 100644 --- a/reference/set/multiset/erase_if_free.md +++ b/reference/set/multiset/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(multiset& c, Predicate pred); + typename multiset::size_type + erase_if(multiset& c, Predicate pred); } ``` @@ -19,6 +20,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -26,14 +28,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -72,4 +76,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/set/set/erase_if_free.md b/reference/set/set/erase_if_free.md index 883ab4f0d8..b8bfd02724 100644 --- a/reference/set/set/erase_if_free.md +++ b/reference/set/set/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(set& c, Predicate pred); + typename set::size_type + erase_if(set& c, Predicate pred); } ``` @@ -19,6 +20,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -26,14 +28,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -72,4 +76,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/string/basic_string/erase_free.md b/reference/string/basic_string/erase_free.md index f3d175a674..4b9d7315e0 100644 --- a/reference/string/basic_string/erase_free.md +++ b/reference/string/basic_string/erase_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove(c.begin(), c.end(), value), c.end()); +auto it = remove(c.begin(), c.end(), value); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove[link /reference/algorithm/remove.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -64,4 +68,5 @@ HelloWorld ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/string/basic_string/erase_if_free.md b/reference/string/basic_string/erase_if_free.md index 3d8572a52c..922a6b3bcf 100644 --- a/reference/string/basic_string/erase_if_free.md +++ b/reference/string/basic_string/erase_if_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove_if(c.begin(), c.end(), pred), c.end()); +auto it = remove_if(c.begin(), c.end(), pred); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove_if[link /reference/algorithm/remove_if.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -64,4 +68,5 @@ HelloWorld ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/unordered_map/unordered_map/erase_if_free.md b/reference/unordered_map/unordered_map/erase_if_free.md index da0317de97..5dbbcd2db4 100644 --- a/reference/unordered_map/unordered_map/erase_if_free.md +++ b/reference/unordered_map/unordered_map/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(unordered_map& c, Predicate pred); + typename unordered_map::size_type + erase_if(unordered_map& c, Predicate pred); } ``` @@ -21,6 +22,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -28,14 +30,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -78,4 +82,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/unordered_map/unordered_multimap/erase_if_free.md b/reference/unordered_map/unordered_multimap/erase_if_free.md index 0249d22f13..a22fe19347 100644 --- a/reference/unordered_map/unordered_multimap/erase_if_free.md +++ b/reference/unordered_map/unordered_multimap/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(unordered_multimap& c, Predicate pred); + typename unordered_multimap::size_type + erase_if(unordered_multimap& c, Predicate pred); } ``` @@ -21,6 +22,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -28,14 +30,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -79,4 +83,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/unordered_set/unordered_multiset/erase_if_free.md b/reference/unordered_set/unordered_multiset/erase_if_free.md index daabf319f0..c228a4e661 100644 --- a/reference/unordered_set/unordered_multiset/erase_if_free.md +++ b/reference/unordered_set/unordered_multiset/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(unordered_multiset& c, Predicate pred); + typename unordered_multiset::size_type + erase_if(unordered_multiset& c, Predicate pred); } ``` @@ -19,6 +20,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -26,14 +28,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -72,4 +76,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/unordered_set/unordered_set/erase_if_free.md b/reference/unordered_set/unordered_set/erase_if_free.md index 7b34f43449..1b3f5a4ffa 100644 --- a/reference/unordered_set/unordered_set/erase_if_free.md +++ b/reference/unordered_set/unordered_set/erase_if_free.md @@ -7,7 +7,8 @@ ```cpp namespace std { template - void erase_if(unordered_set& c, Predicate pred); + typename unordered_set::size_type + erase_if(unordered_set& c, Predicate pred); } ``` @@ -19,6 +20,7 @@ namespace std { 以下と等価: ``` +auto original_size = c.size(); for (auto i = c.begin(), last = c.end(); i != last;) { if (pred(*i)) { i = c.erase(i); @@ -26,14 +28,16 @@ for (auto i = c.begin(), last = c.end(); i != last;) { ++i; } } +return original_size - c.size(); ``` * c.begin()[link begin.md] * c.end()[link end.md] * c.erase[link erase.md] +* c.size()[link size.md] ## 戻り値 -なし +削除した要素数を返す。 ## 例 @@ -72,4 +76,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/vector/vector/erase_free.md b/reference/vector/vector/erase_free.md index e02a87e026..bba3313d74 100644 --- a/reference/vector/vector/erase_free.md +++ b/reference/vector/vector/erase_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove(c.begin(), c.end(), value), c.end()); +auto it = remove(c.begin(), c.end(), value); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove[link /reference/algorithm/remove.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -68,4 +72,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf) diff --git a/reference/vector/vector/erase_if_free.md b/reference/vector/vector/erase_if_free.md index ac4e975690..76991aa04a 100644 --- a/reference/vector/vector/erase_if_free.md +++ b/reference/vector/vector/erase_if_free.md @@ -19,10 +19,14 @@ namespace std { 以下と等価: ``` -c.erase(remove_if(c.begin(), c.end(), pred), c.end()); +auto it = remove_if(c.begin(), c.end(), pred); +auto r = distance(it, c.end()); +c.erase(it, c.end()); +return r; ``` * c.erase[link erase.md] * remove_if[link /reference/algorithm/remove_if.md] +* distance[link /reference/iterator/distance.md] * c.begin()[link begin.md] * c.end()[link end.md] @@ -68,4 +72,5 @@ int main() ## 参照 -- [P1209R0 | Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [P1209R0 Adopt consistent container erasure from Library Fundamentals 2](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1209r0.html) +- [R1115R3 Improving the Return Value of Erase-Like Algorithms II: Free `erase`/`erase_if`](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1115r3.pdf)