Re[4]: std::алгоритмы
От: Valus Россия  
Дата: 12.10.05 09:28
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Можно.

К>
К>// версия без явных ссылок на контейнер (естественно, 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 к примеру
  /*делаем с элементами заполненного контейнера че хотим?*/
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.