Boost logo

Boost :

From: Maxim Egorushkin (e-maxim_at_[hidden])
Date: 2003-10-05 09:07:08

Eric wrote:

ES> Could someone give me an example of how one would iterate through a
ES> map, printing out the key and values for each element, using the lambda
ES> library?

Here it is:

#include <iostream>
#include <algorithm>
#include <map>
#include <string>

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>

using namespace std;
namespace lm = boost::lambda;

typedef map<string, int> the_map;

void f()
the_map m;
m["Natasha"] = 1;
m["Maxim"] = 2;
for_each(m.begin(), m.end(),
cout << lm::constant("key: ") << lm::bind(&the_map::value_type::first, lm::_1),
cout << lm::constant("\tvalue: ")<< lm::bind(&the_map::value_type::second, lm::_1) << '\n'

int main()
return 0;

But I wonder, would it be more simple to define

ostream& operator<<(ostream&, const the_map::value_type&);

and print a map using

copy(m.begin(), m.end(), ostream_iterator<the_map::value_type>(cout, "\n"));


Boost list run by bdawes at, gregod at, cpdaniel at, john at