[section:map_keys map_keys]

[table
    [[Syntax] [Code]]
    [[Pipe] [`rng | boost::adaptors::map_keys`]]
    [[Function] [`boost::adaptors::keys(rng)`]]
]

* [*Precondition:] The `value_type` of the range is an instantiation of `std::pair`.
* [*Postcondition:] For all elements `x` in the returned range, `x` is the result of `y.first` where `y` is the corresponding element in the original range.
* [*Range Category:] __single_pass_range__
* [*Returned Range Category:] The range category of `rng`.

[section:map_keys_example map_keys example]
``
#include <boost/range/adaptor/map.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/assign.hpp>
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>

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

    std::map<int,int> input;
    for (int i = 0; i < 10; ++i)
        input.insert(std::make_pair(i, i * 10));

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

    return 0;
}
``
[endsect]

This would produce the output:
``
0,1,2,3,4,5,6,7,8,9
``
[endsect]


