$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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()
{
f();
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"));
?