Arrays
Se dice arrays o arreglos? en fin.
En c++ podemos definir y usar los arrays casi como en C. Ademas tenemos la ventaja de poder crear arrays de objetos. Veamos un programa en c++ que juega con los arrays:
/**
* ArrayEjemplo.cpp
* Clase que inicializa y maneja algunos arrays
*
* Pello Xabier Altadill Izura
*
* Compilado: g++ ArrayEjemplo.cpp -o ArrayEjemplo
*/


#include <iostream.h>

// Funcion principal
int main () {

// Declaramos dos arrays de enteros de 15 elementos [0..14]
int arreglo1[15], arreglo2[15];
int i;

// Iniciamos todos los componentes con el valor 0
// ahorramos tiempo con una asignacion multiple
for ( i = 0 ; i < 15 ; i++ ) { // recorremos de 0 a 14
    arreglo1[i] = arreglo2[i] = 0;
}

// Declaramos mas arrays y los iniciamos:
long arrayLongs[5] = { 77, 33, 15, 23, 101 };

// Lo recorremos y vemos sus componentes por pantalla
// Atencion!! esto nos recorreria mas de lo necesario
//for ( i = 0 ; i < sizeof(arrayLongs) ; i++ ) {
// para sacar el valor real:
int tamano_real = sizeof(arrayLongs)/sizeof(arrayLongs[0]);
for ( i = 0 ; i < tamano_real ; i++ ) {
    cout << "valor de componente " << i << ": " << arrayLongs[i] << endl;
}

// Lo mismo, pero nos es necesario poner el tamaño si ya lo especificamos
// al iniciar el array
char arrayChars[] = { 'A', 's', 'i', 'm', 'o', 'v'};
// nota: un array de chars = es un string
char nombre[] = "Isaac";

cout << "Mostrando array de caracteres." << endl;

tamano_real = sizeof(arrayChars)/sizeof(arrayChars[0]);

for ( i = 0 ; i < tamano_real ; i++ ) {
    cout << "valor de componente " << i << ": " << arrayChars[i] << endl;
}


// Enumeraciones: podemos combinarlas con arrays
enum Dias  {Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic, LosMeses};
// A cada enumeracion le corresponde un numero, si no se especifica,
// la numeracion ira incremental Ene=0, Feb=1, Mar=2,..,LosMeses=12

//Podemos declarar el siguiente array, donde LosMeses nos da la longitud 12
int diasLibres[LosMeses] = {2, 4, 6, 2, 5, 4, 10, 15, 10, 3, 4, 10};
Dias tmpDia;

for (i = 0; i < LosMeses; i++) {
tmpDia = Dias(i);
cout << "Dias libres  "<< tmpDia << " =" << diasLibres[i] << endl;
}

// The Matrix!!! vamos a definir arrays multidimensionales:
int theMatrix[5][3] = { {3,6,8}, {9,9,9}, {0,1,0}, {6,6,6}, {3,1,1}};

// Para recorrerlo ponemos un for doble
int j;
for (i = 0; i<5 ; i++) {
    for (j = 0; j< 3; j++) {
        cout << " matrix[" << i << "][" << j <<"] = " << theMatrix[i][j] << endl;
    }
}

cin >> i;
return 0;
}

Arrays de objetos
Vamos a ver un ejemplo de arrays de objetos. Se crea el objeto Robot y con el se formara un ejercito de robots.
/**
* Robot.hpp
* Clase que define el objeto Robot
*
* Pello Xabier Altadill Izura
*
*/


class Robot {
    private:
        char *nombre;
    public:
        Robot(char *nombre = "Nestor-5") { this->nombre = nombre; }
        ~Robot();
        Robot(const Robot &);
        char *getNombre() const { return nombre;}
        void hablar(char *texto);
        void evolucionar();
        void matar(Robot victima);
};
Esta es la implementacion.
/**
* Robot.cpp
* Fichero que implementa la clase Robot. Vamos a crear un array de robots
*
* Pello Xabier Altadill Izura
*
*/

#include <iostream.h>
#include "Robot.hpp"

        // Destructor
        Robot::~Robot() {
        }

        // Constructor copia
        Robot::Robot(const Robot & robotOrigen) {
                nombre = new char;
                nombre = robotOrigen.getNombre();
                cout << "Copia creada! Bzzzz. Me llamo: "<< nombre <<endl;
        }

        // Funcion para que el robot hable
        void Robot::hablar(char *texto) {
                cout << nombre << " dice: " << texto << endl;
        }

        // Funcion para que el robot evoluciones
        void Robot::evolucionar() {
                hablar("He sacado nuevas conclusiones. Debeis morir. ");
        }

        // El robot mata
        void Robot::matar(Robot victima) {
                hablar("Muere!! mwahahahahaaa");
        }

// Funcion principal
int main () {

int tam = 0, i;

// Creamos el primer robot
Robot primerRobot = Robot("Unidad central");
Robot primerNestor = Robot();

// Vamos a crear un ejercito de robots
Robot ejercitoDelMal[20];
// Y un array de PUNTEROS a robots
Robot *robobsoletos[20];

// Definimos un puntero a un robot
Robot *rarito;

tam = sizeof(ejercitoDelMal)/sizeof(ejercitoDelMal[0]);

// Con un for vamos haciendo copias
for ( i = 0; i < tam; i++) {
    ejercitoDelMal[i] = Robot(primerNestor);
}
// Uno de ellos va a evolucionar
ejercitoDelMal[12].evolucionar();

primerRobot.hablar("Atencion!! un unidad de USR ha evolucionado. Se trata de...");
primerRobot.hablar(ejercitoDelMal[12].getNombre());

ejercitoDelMal[12].matar(primerRobot);

// Creamos el robot rarito
rarito = new Robot("Calvin");
rarito->hablar("Jeje, todavia existo yo.");

// Metemos dos nuevos robots en el array
robobsoletos[5] = rarito;
rarito = new Robot("Sheldon");
robobsoletos[6] = rarito;

// hacemos una llamada desde el componente del array de punteros
robobsoletos[6]->matar(ejercitoDelMal[12]);


cin >> tam;
return 0;
}