Вот мой код:Использование ostream_iterator на векторе указателей
std::vector<int*> osd;
osd.push_back(new int(2));
osd.push_back(new int(3));
std::ostream_iterator<int*, char> out_iter2(std::cout, " ");
copy(osd.begin(),osd.end(), out_iter2);
выход: 0x8e6388 0x8e6a8
Как сделать итератор для печати фактических значений? Нужно ли мне специализироваться?
Я сделал специализированный оператор для него, но он все еще не работает
std::ostream& operator<<(std::ostream& os, const std::vector<int*>::iterator pd)
{
return os << *pd << std::endl;
}
Ну, это довольно много, что 'ostream_iterator' должен делать - он использует' 'оператор <<. Почему вы используете 'vector' вместо 'vector '? –
Pradhan
Ostream_iterator вызывает что-то вроде os << * iter (не os << iter) внутри, поэтому специализация xxxxx :: iterator здесь не полезна. – Sorayuki