std::remove, std::remove_if
Defined in header <algorithm>
|
||
template< class ForwardIt, class T > ForwardIt remove( ForwardIt first, ForwardIt last, const T& value ); |
(1) | |
template< class ForwardIt, class UnaryPredicate > ForwardIt remove_if( ForwardIt first, ForwardIt last, UnaryPredicate p ); |
(2) | |
УдалÑÐµÑ Ð¸Ð· диапазона [first, last)
вÑе ÑлеменÑÑ, ÑдовлеÑвоÑÑÑÑие опÑÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾Ð¼Ñ ÑÑловиÑ. ÐеÑвÑй ваÑÐ¸Ð°Ð½Ñ ÑдалÑÐµÑ Ð²Ñе ÑлеменÑÑ, ÑавнÑе value
, вÑоÑой ваÑÐ¸Ð°Ð½Ñ ÑдалÑÐµÑ Ð²Ñе ÑлеменÑÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
пÑÐµÐ´Ð¸ÐºÐ°Ñ p
возвÑаÑÐ°ÐµÑ true.
Удаление оÑÑÑеÑÑвлÑеÑÑÑ Ð¿ÑÑÑм Ñдвига ÑлеменÑов внÑÑÑи диапазона Ñаким обÑазом, ÑÑо ÑдалÑемÑе ÑлеменÑÑ Ð¿ÐµÑезапиÑÑваÑÑÑÑ. ÐлеменÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑÑаÑÑм и новÑм конÑами диапазона имеÑÑ Ð½ÐµÐ¾Ð¿ÑеделÑнное знаÑение. ÐозвÑаÑаеÑÑÑ Ð¸ÑеÑаÑÐ¾Ñ Ð½Ð° новÑй ÐºÐ¾Ð½ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°. ÐÑноÑиÑелÑнÑй поÑÑдок оÑÑавÑÐ¸Ñ ÑÑ ÑлеменÑов ÑÐ¾Ñ ÑанÑеÑÑÑ.
СодеÑжание |
[пÑавиÑÑ] ÐаÑамеÑÑÑ
first, last | â | диапазон ÑлеменÑов Ð´Ð»Ñ Ð¾Ð±ÑабоÑки |
value | â | знаÑение ÑдалÑемÑÑ ÑлеменÑов |
p | â | ÑнаÑнÑй пÑедикаÑ, коÑоÑÑй возвÑаÑаеÑâtrue , еÑли ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ñдален. ÐпÑеделение ÑÑнкÑии пÑедикаÑа должно бÑÑÑ ÑквиваленÑно ÑледÑÑÑемÑ: bool pred(const Type &a); ÐÑиÑÑÑÑÑвие const & в опÑеделении не обÑзаÑелÑно, но ÑÑнкÑÐ¸Ñ Ð½Ðµ должна модиÑиÑиÑоваÑÑ Ð¿ÐµÑедаваемÑе ей обÑекÑÑ. |
ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº Ñипам | ||
-ForwardIt должен ÑооÑвеÑÑÑвоваÑÑ ÑÑебованиÑм ForwardIterator .
| ||
-The type of dereferenced ForwardIt must meet the requirements of MoveAssignable .
|
[пÑавиÑÑ] ÐозвÑаÑаемое знаÑение
ÐÑеÑаÑÐ¾Ñ Ð½Ð° новÑй ÐºÐ¾Ð½ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°.
[пÑавиÑÑ] СложноÑÑÑ
Ровно std::distance(first, last) пÑименений пÑедикаÑа.
[пÑавиÑÑ] ÐÑимеÑаниÑ
ÐдноимÑннÑе ÑÑнкÑии-ÑÐ»ÐµÐ½Ñ ÐºÐ¾Ð½ÑейнеÑов list::remove, list::remove_if, forward_list::remove и forward_list::remove_if ÑдалÑÑÑ ÑлеменÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ (ÑÑиÑаÑÑ).
[пÑавиÑÑ] ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑеализаÑиÑ
ÐеÑвÑй ваÑÐ¸Ð°Ð½Ñ |
---|
template<class ForwardIt, class T> ForwardIt remove(ForwardIt first, ForwardIt last, const T& value) { ForwardIt result = first; for (; first != last; ++first) { if (!(*first == value)) { *result++ = *first; } } return result; } |
ÐÑоÑой ваÑÐ¸Ð°Ð½Ñ |
template<class ForwardIt, class UnaryPredicate> ForwardIt remove_if(ForwardIt first, ForwardIt last, UnaryPredicate p) { ForwardIt result = first; for (; first != last; ++first) { if (!p(*first)) { *result++ = *first; } } return result; } |
[пÑавиÑÑ] ÐÑимеÑ
СледÑÑÑий код ÑдалÑÐµÑ Ð²Ñе пÑÐ¾Ð±ÐµÐ»Ñ Ð¸Ð· ÑÑÑоки, пеÑемеÑÐ°Ñ Ð¸Ñ Ð² ÐµÑ ÐºÐ¾Ð½ÐµÑ, а заÑем ÑÑиÑаÑ.
#include <algorithm> #include <string> #include <iostream> int main() { std::string str = "ТекÑÑ Ñ Ð½ÐµÑколÑкими пÑобелами"; str.erase(std::remove(str.begin(), str.end(), ' '), str.end()); std::cout << str << '\n'; }
ÐÑвод:
ТекÑÑÑнеÑколÑкимипÑобелами
[пÑавиÑÑ] См. Ñакже
ÐопиÑÑÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ ÑлеменÑов опÑÑÐºÐ°Ñ Ñе, коÑоÑÑе ÑдовлеÑвоÑÑÑÑ Ð¾Ð¿ÑеделеннÑм кÑиÑеÑиÑм ÐÑигинал: copies a range of elements omitting those that satisfy specific criteria ТекÑÑ Ð±Ñл пеÑеведÑн авÑомаÑиÑеÑки иÑполÑзÑÑ ÐеÑеводÑик Google. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑовеÑиÑÑ Ð¸ иÑпÑавиÑÑ Ð¿ÐµÑевод. ÐÐ»Ñ Ð¸Ð½ÑÑÑÑкÑий ÑÑлкниÑе ÑÑда. (Ñаблон ÑÑнкÑии) |