c++ - Take variable number of arguments and put them in std::vector -
i'm making class - let's call container
- containing std::vector
, special logic decides how vector values picked. want add method adding multiple values class 1 call. method adds 1 item:
void loopgenerator::add(randomstripe &stripe) { stripes.push_back(new singlestripe(stripe)); }
i'd similar method called this:
loopgenerator gen = loopgenerator(); gen.add(randomstripe(), randomstripe(), randomstripe() ... , as want ... );
and add parameters inner std::vector
.
is possible standard libraries, or best without them?
you can use std::initializer_list. example
#include <initializer_list> #include <algorithm> #include <vector> #include <iterator> //... void loopgenerator::add( std::initializer_list<randomstripe> stripe ) { std::transform( stripe.begin(), stripe.end(), std::back_inserter( stripes ), []( const randomstripe &s ) { return new singlestripe( s ); } ); }
and call like
gen.add( { randomstripe(), randomstripe(), randomstripe(), /*...*/ } );
Comments
Post a Comment