Re: [Boost-users] converting value before inserting into a list

Hello, Alexander Shyrokov, You wrote:
I want to convert values according to a map before inserting it into the list. What is a proper way to do that? I have this:
map
m; vector<int> a,b;
for(vector<int>const_iterator i=a.begin();i!=a.end();++i) b.push_back(m[*i]);
I could use std::copy with std::back_inserter to add elements to b, but how do I convert it first? Should I write my own version of back_inserter for that?
copy(a.begin(),a.end(),my_back_inserter(b,m));
Thanks.
Try this:
#include

On 9/19/06, Flex Ferrum
Hello, Alexander Shyrokov,
You wrote:
I want to convert values according to a map before inserting it into the list. What is a proper way to do that? I have this:
map
m; vector<int> a,b; for(vector<int>const_iterator i=a.begin();i!=a.end();++i) b.push_back(m[*i]);
I could use std::copy with std::back_inserter to add elements to b, but how do I convert it first? Should I write my own version of back_inserter for that?
copy(a.begin(),a.end(),my_back_inserter(b,m));
Thanks.
Try this:
#include
using namespace boost; using namespace boost::lambda;
//... //...
map
m; vector<int> a,b; std::transform(a.begin(), a.end(), std::back_inserter(b), var(m)[_1]);
I would be really interested to know which of the various styles people find the best. Tony

Flex Ferrum wrote:
map
m; vector<int> a,b; std::transform(a.begin(), a.end(), std::back_inserter(b), var(m)[_1]);
Is this a case where transform is not appropriate? My understanding is that the operation supplied to transform must not have any side effects, and here m may be modified by operator[]. Does this count as a side effect? Thanks, David
participants (3)
-
David Walthall
-
Flex Ferrum
-
Gottlob Frege