Re: vector assign
In article
<252d0788-1081-441b-b4b6-d3879ccc03cf@k37g2000hsf.googlegroups.com>,
Dar?o Griffo <dario.griffo.listas@gmail.com> wrote:
stephen b wrote:
it would make for much more readable code that is faster to write in
some situations. I've not seen this feature documented anywhere
though which I find curious. is there another way to achieve this?
Maybe using variable arguments and inheritance
#include <iostream>
#include <vector>
#include <stdarg.h>
#include <iterator>
template <typename T > class myVec: public std::vector<T>
{
public:
void assign(int amount,...);
};
template <typename T > void myVec<T>::assign(int amount,...)
{
T val;
va_list vl;
va_start(vl,amount);
for (int i=0;i<amount;i++)
{
val=va_arg(vl,T);
push_back(val);
}
va_end(vl);
}
int main()
{
myVec<int> vec;
vec.assign(3,2,1,0);
std::copy(vec.begin(),vec.end(),std::ostream_iterator<int>(std::cout,
" "));
return 0;
}
Dar?o
Would this work for non-POD types? BTW inheritance is not necessary.
template < typename T >
void assign( std::vector<T>& vec, int count, ... )
{
va_list vl;
va_start( vl, count );
for ( int i=0; i!= count; ++i)
{
vec.push_back( va_arg( vl, T ) );
}
va_end(vl);
}
using namespace std;
int main()
{
vector<int> vec;
assign( vec, 3, 2, 1, 0 );
copy( vec.begin(), vec.end(), ostream_iterator<int>( cout, " " ) );
}
}