Я пытаюсь кодировать противоположное действие на это:Как читать произвольное количество значений с помощью std :: copy?
std::ostream outs; // properly initialized of course
std::set<int> my_set; // ditto
outs << my_set.size();
std::copy(my_set.begin(), my_set.end(), std::ostream_iterator<int>(outs));
это должно быть что-то вроде этого:
std::istream ins;
std::set<int>::size_type size;
ins >> size;
std::copy(std::istream_iterator<int>(ins), std::istream_iterator<int>(ins) ???, std::inserter(my_set, my_set.end()));
Но я застрял с «концом» Итератор - входное interators может 't использовать std :: advance, и я не могу использовать два потока с одним и тем же источником ...
Есть ли какой-нибудь изящный способ решения этого вопроса? Конечно, я могу использовать цикл, но, может быть, есть что-то лучше :)
, хотя это очень крутое решение, следует отметить, что просто писать цикл и не делать этого будет короче. –
Вы использовали dynamic_cast для неполиморфного типа. Это не должно компилироваться –
@Armen Tsirunyan: Ваш аргумент - победа. Вы верны в своем утверждении, что типы non-polymorphics не будут компилироваться при использовании с dynamic_cast. Однако вышеприведенное компилируется и работает правильно. Таким образом, с помощью окклюменного ящика мы получаем вывод о том, что он является полиморфным типом. Спасибо вам и спокойной ночи. :-) –