Потоковая запись и контейнер
От: Wody  
Дата: 19.12.09 12:18
Оценка:
Есть функция, принимающая итератор и записывающая с помощью него в контейнер несколько байт:

template <typename T> void Put(T i)
{
  *i = 0x07;
  ++i;

  *i = 0x6F;
  ++i;

  //и так далее
}


как это сделать по-человечески, например, обернув передаваемый контейнер (или итератор) в std::ostream?

Спасибо
Re: Потоковая запись и контейнер
От: guyos Россия  
Дата: 19.12.09 13:10
Оценка:
Здравствуйте, Wody,

так можно


typedef  vector<int>::iterator VecIter;

template <typename T, typename ValType>
void Put(T i, ValType value)
{
    *i = value;
    i++;
}


int main() {

    vector<int> vec;
    vec.push_back(0);

    VecIter iter = vec.begin();
    //for_each (vec.begin(), vec.end(), myfunction);
   Put<VecIter>(iter, 0x07);

   cout << vec[0];

    return 0;
}
Re[2]: Потоковая запись и контейнер
От: Wody  
Дата: 19.12.09 15:31
Оценка:
Здравствуйте, guyos, Вы писали:

G>int main() {


G> vector<int> vec;

G> vec.push_back(0);

G> VecIter iter = vec.begin();

G> //for_each (vec.begin(), vec.end(), myfunction);
G> Put<VecIter>(iter, 0x07);

G> cout << vec[0];


G> return 0;

G>}

G>[/ccode]

Точно. Чего-то туплю... Спасибо)
Re: Потоковая запись и контейнер
От: Centaur Россия  
Дата: 19.12.09 16:51
Оценка:
Здравствуйте, Wody, Вы писали:

W>Есть функция, принимающая итератор и записывающая с помощью него в контейнер несколько байт:


W>template <typename T> void Put(T i)
W>{
  *i++ = 0x07;
  *i++ = 0x6F;
W>  //и так далее
W>}
W>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.