| Home | Libraries | People | FAQ | More

##### adjacent_filtered

Syntax | Code
--- | ---
Pipe | `rng | boost::adaptors::adjacent_filtered(bi_pred)`
Function | `boost::adaptors::adjacent_filter(rng, bi_pred)`

- Precondition: The `value_type` of the range is convertible to both argument types of `bi_pred`.
- Postcondition: For all adjacent elements `[x,y]` in the returned range, `bi_pred(x,y)` is `true`.
- Throws: Whatever the copy constructor of `bi_pred` might throw.
- Range Category: Forward Range
- Return Type: `boost::adjacent_filtered_range<decltype(rng), decltype(bi_pred)>`
- Returned Range Category: The minimum of the range category of `rng` and Forward Range

###### adjacent_filtered example

    #include <boost/range/adaptor/adjacent_filtered.hpp>
    #include <boost/range/algorithm/copy.hpp>
    #include <boost/assign.hpp>
    #include <iterator>
    #include <functional>
    #include <iostream>
    #include <vector>

    int main(int argc, const char* argv[])
    {
        using namespace boost::assign;
        using namespace boost::adaptors;

        std::vector<int> input;
        input += 1,1,2,2,2,3,4,5,6;

        boost::copy(
            input | adjacent_filtered(std::not_equal_to<int>()),
            std::ostream_iterator<int>(std::cout, ","));

        return 0;
    }

This would produce the output:

    1,2,3,4,5,6,