2011-01-25 3 views

Respuesta

3

Puede hacer esto, pero primero debe escribir su propio operator >> para la clase de pares. Este operador es el secreto completo de la llamada anterior. Su implementación real depende del formato de sus pares int.

+0

: o really? ¡Bonito! Pensé que esto usa .push_back o algo así. +1 –

+0

¿podría dar un ejemplo de código de trabajo? muchas gracias –

+1

@Qiang Li: Trivial. 'template istream & operator >> (istream & in, par & val) {return in >> val.first >> val.second; } ' – ephemient

4

boost::zip_iterator podría ser utilizado.

copy(boost::make_zip_iterator(
     boost::make_tuple(istream_iterator<int>(cin), 
          istream_iterator<int>(cin)), 
    boost::make_zip_iterator(
     boost::make_tuple(istream_iterator<int>(), 
          istream_iterator<int>()), 
    back_inserter(v)); 
+0

wow ... Es curioso que un lenguaje de bajo nivel como C++ sea el primero en el que encuentro este concepto implementado en ... –

+0

+1 hoy aprendí sobre una nueva y genial biblioteca de C++. – wilhelmtell

+0

@Pavel: porque C++ es un nivel bajo, es posible que todo sea posible. Es solo que generalmente no se sabe dónde mirar :) Por otro lado, 'zip' es bastante conocido, especialmente en programación funcional. –

Cuestiones relacionadas