Здравствуйте, Кодт, Вы писали:
К>Можно.
К>К>// версия без явных ссылок на контейнер (естественно, back_inserter внутри знает, откуда ноги растут)
К>template<class OutputIterator>
К>void gen_points_it(OutputIterator it, int n)
К>{
К> for(int i=0; i<n; ++i) // или for(; n>0; --n)
К> {
К> .....
К> *it = xxxxxx;
К> ++it;
К> }
К>}
К>// версия, принимающая контейнер, а не инсертер
К>template<class Container>
К>void gen_points_cont(Container &cont, int n)
К>{
К> gen_points_it(back_inserter(cont), n);
К>}
К>
К>Ну и работай на здоровье. Он же передан по ссылке.
К>К>vector<int> v(10);
К>gen_points_cont(v, 20);
К>gen_points_it(front_inserter(v), 5); // можно и с другого конца запихивать
К>cout << v.size(); // предположительно, 35
К>
в том то и дело, что придется заводить версию с передачей самого контейнера.
а вот так нельзя?
template<class EndIterator,class OutputIterator>
void some_alg(EndIterator eit,OutputIterator it)
{
int i;
EndIterator iter;
for(i=0;i<1000;++i)
{
*it= bla-bla ;
++it;
}
eit=eit-i; //для random access к примеру
/*делаем с элементами заполненного контейнера че хотим?*/
}