C++ boost::range::remove














































C++ boost::range::remove



Description:
The header 'boost/range/algorithm/remove.hpp'   contains the algorithm remove() in C++ boost library. This function rearranges all the occurrence from a sequence such that elements x from the range returns true for x == val. The function returns an iterator new_last such that [first, new_last) contains no elements equal to val. The range [new_last, last) consists of unspecified elements.

Syntax:
template<class ForwardRange, class Value>
typename range_iterator<ForwardRange>::type
remove(ForwardRange& rng, const Value& val);

template<class ForwardRange, class Value>
typename range_iterator<const ForwardRange>::type
remove(const ForwardRange& rng, const Value& val);

template<range_return_value re, class ForwardRange, class Value>
typename range_return<ForwardRange,re>::type
remove(ForwardRange& rng, const Value& val);

template<range_return_value re, class ForwardRange, class Value>
typename range_return<const ForwardRange,re>::type
remove(const ForwardRange& rng, const Value& val);



Parameters:
The following parameters are accepted by the function:
1.) rng: It specifies the sequence whose elements as to be eliminated.
2.) val: The value to be removed.


The function returns an iterator new_last such that [first, new_last) contains no elements equal to val.


Program:
#include <boost/range/algorithm/remove.hpp>
#include <vector>
#include <iostream>
using namespace std;

int main()
{
   
vector<int> Arr = {1, 2, 5, 9, 5, 7, 5}, Arr1;
    Arr1 = {
1, 1, 1, 1, 1};

   
// remove all the occurrence of 5 from Arr
   
auto Arr_new_size = boost::range::remove(Arr, 5);
   
// remove all the occurrence of 1 from Arr1
   
auto Arr1_new_size = boost::range::remove(Arr1, 1);
   
// Resizing the array to new_last
    Arr.resize(Arr_new_size - Arr.begin());
    Arr1.resize(Arr1_new_size - Arr1.begin());

   
cout << "The elements of Arr after removing are: {";
   
for(auto it = boost::begin(Arr); it != boost::end(Arr); it++)
       
cout << *it << " ";
   
cout << "}";

   
cout << endl << "The elements of Arr1 after removing are: {";
   
for(auto it = boost::begin(Arr1); it != boost::end(Arr1); it++)
       
cout << *it << " ";
   
cout << "}";
}


Output:
The elements of Arr after removing are: {1 2 9 7 }
The elements of Arr1 after removing are: {}


Complexity:
Time Complexity: The time complexity is linear between the first and last elements. There are exactly distance(rng) number of comparisons performed.

Please write on comment section if you find any mistake or for any suggestions.

More Articles of Abhishek Kumar Singh:

Name Views Likes
C++ boost::range::replace_if 956 0
C++ boost::range::copy_backward 724 1
C++ boost::range::max_element 1177 0
C++ boost::range::inplace_merge 647 0
C++ boost::range::copy 1250 1
C++ boost::algorithm::is_partitioned() 819 1
C++ boost::algorithm::copy_if() 967 0
C++ boost::range::for_each (version 2) 727 0
C++ boost::range::set_symmetric_difference 636 0
C++ boost::remove_copy_if 723 0
C++ boost::range::set_intersection 940 0
C++ boost::range::find_end 673 0
C++ boost::range::remove_erase_if 1480 0
C++ boost::range::push_back 1086 0
C++ boost::range::generate 624 0
C++ boost::algorithm::any_of() 625 0
C++ boost::range::insert 696 0
C++ boost::range::remove_erase 896 0
C++ boost::range::reverse 1165 0
C++ boost::algorithm::equal() 724 1
C++ boost::range::copy_n 804 0
C++ boost::range::random_shuffle 1218 1
C++ boost::algorithm::partition_point() 586 0
C++ boost::algorithm::one_of_equal() 508 0
C++ boost::algorithm::all_of() 857 1
C++ boost::range::merge 962 0
C++ boost::range::reverse_copy 733 0
C++ boost::range::find 716 0
C++ boost::range::fill_n 586 0
Removing duplicate elements from std::vector (using std::unique and std::set) 2125 1
C++ boost::range::equal 671 0
C++ boost::algorithm::iota() 904 0
C++ boost::range::is_sorted 819 0
test article 760 2
C++ boost::algorithm::is_permutation() 808 1
C++ boost::partial_sum 831 0
C++ boost::range::partial_sort 893 1
C++ boost::range::min_element 989 0
C++ boost::range::iota 990 0
C++ boost::range::set_union 687 0
C++ boost::algorithm::partition_copy() 1047 3
C++ boost::range::swap_ranges 592 0
C++ boost::range::for_each 857 0
C++ boost::range::upper_bound 1021 0
C++ boost::range::binary_search 1187 0
C++ boost::algorithm::all_of_equal() 528 0
C++ boost::algorithm::copy_n() 647 1
C++ boost::range::lower_bound 985 0
C++ boost::algorithm::gather() 1388 0
C++ boost::algorithm::none_of_equal() 570 0
C++ boost::algorithm::one_of() 688 2
C++ boost::range::rotate 817 0
C++ boost::algorithm::any_of_equal() 817 0
Use of Comparator in C++ 2045 0
C++ boost::range::count 785 0
C++ boost::range::replace_copy_if 610 0
C++ boost::range::remove 790 2
C++ boost::remove_if 1360 1
C++ boost::range::nth_element 1095 1
C++ boost::range::partition 715 1
C++ boost::range::erase 607 0
C++ boost::range::fill 873 1
C++ boost::range::find_if 1214 0
C++ boost::range::lexicographical_compare 781 0
C++ boost::algorithm::none_of() 559 0
C++ boost::algorithm::hex() 3330 0
C++ boost::range::replace 702 0
C++ boost::range::replace_copy 794 1
C++ boost::range::set_difference 903 0
C++ boost::range::overwrite 680 0
C++ boost::range::count_if 908 0
C++ boost::range::push_front 641 0
C++ boost::range::includes 638 0
C++ boost::algorithm::is_sorted() 667 0
C++ boost::range::remove_copy 595 1
C++ boost::algorithm::minmax_element 596 1
Deletion of leaf node of a Binary Search Tree 1653 1
Nth Fibonacci Number (Recursive Solution, Dynamic Programming, Iterative Solution 3768 1
C++ boost::range::rotate_copy 621 0

Comments