Ir al contenido principal

Entradas

Mostrando entradas de enero, 2013

Inicializar un std::vector en C++

Lo primero que tenemos que hacer es crear la plantilla que se va a utilizar para inicializar los vectores: template < typename T > class init_vector { public : init_vector < T >& operator<< ( const T & value ) {     internal_vector.push_back( value );     return * this ; } operator std:: vector < T >() const {     return internal_vector; } private : std:: vector < T > internal_vector; }; A la hora de inicializar un vector podemos utilizar esta plantilla de manera muy sencilla y elegante: std:: vector < int > v = init_vector < int >() << 0 << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8 << 9; std:: vector < string > empresas = init_vector < string >() << "Google" << "Microsoft" << "Apple" << "Nokia" ;

Bucles for basados en rango, Inferencia de tipo y Referencia

#include <vector> int main() {     std::vector < string > meses;     meses.push_back( "Enero" );     meses.push_back( "Febrero" );     meses.push_back( "Marzo" );     meses.push_back( "Abril" );     meses.push_back( "Mayo" );     meses.push_back( "Junio" );     meses.push_back( "Julio" );     meses.push_back( "Agosto" );     meses.push_back( "Septiembre" );     meses.push_back( "Octubre" );     meses.push_back( "Noviembre" );     meses.push_back( "Diciembre" );     // Mostrar en consola los meses utilizando un bucle for basado en rango.         for ( string m: meses) {        cout << m << endl;         //m = "cadena_no_se_puede_modificar";    }         // Con inferencia de tipo.    for ( const auto m: meses) {        cout << m << endl;         //m = "cadena_no_se_puede_