Boost logo

Boost Users :

Subject: Re: [Boost-users] [Range] Help with syntax
From: Juan Ramírez (jramirez.uy_at_[hidden])
Date: 2018-10-19 19:33:56


I think you are looking for something like this:

std::transform(
  v.begin(),
  v.end(),
  std::inserter(s, s.end()),
  std::mem_fn(&S::i)
);

On Thu, Oct 18, 2018 at 11:02 AM Robert Jones via Boost-users <
boost-users_at_[hidden]> wrote:

> Given
>
> struct S { int i( ) const; };
> vector<S> v;
> set<int> s;
>
> I want to write (approximately)
>
> for_each( v | transform( []( const S & s ){ return s.i( ); } ), s.emplace
> );
>
> With the intention putting all the i's extracted from v into the set s.
> My syntax
> is all over the place, and I'm not sure how to express the s.emplace bit.
>
> Also is there a better way to say the whole thing? If I were doing
> push_back instead
> of emplace there's a facility especially for that, but I guess Boost:
> :Range hasn't
> embraced emplace because range-v3 is around now.
>
> I'm sure some of you are fluent in this stuff!
>
> Kind Regards
>
> Rob.
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
>

-- 
Juan
:wq


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net