[Range] Help with syntax
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.
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@lists.boost.org> 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@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Juan :wq
participants (3)
-
jean Davy
-
Juan Ramírez
-
Robert Jones