Array de la STL (Std Template Library)
Este array es un wrapper sobre el array de C. Es lo más recomendado para lo que buscas porque añade métodos a los arrays de C que te simplifican y amplifican la funcionalidad de los arrays de C en C++.
#include <iostream>
#include <array>
using namespace std;
int main() {
array<int, 10> numeros;
for (int i = 0; i < 10; ++i) {
numeros[i] = i;
}
cout << numeros[0] << endl; /* 0 */
cout << numeros[1] << endl; /* 1 */
cout << numeros[3] << endl; /* 3 */
cout << numeros[8] << endl; /* 8 */
cout << numeros[9] << endl; /* 9 */
cin.get();
return 0;
}
Vector de la STL
El vector es un wrapper sobre el array anterior. Cuando no sepas el tamaño de un array en tiempo de ejecución puedes utilizar el vector para que maneje la memoria automáticamente de forma dinámica. En resumen, no necesitas saber el tamaño de un array para usarlo.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> numeros;
for (int i = 0; i < 10; ++i) {
numeros.push_back(i);
}
cout << numeros[0] << endl; /* 0 */
cout << numeros[1] << endl; /* 1 */
cout << numeros[3] << endl; /* 3 */
cout << numeros[8] << endl; /* 8 */
cout << numeros[9] << endl; /* 9 */
cin.get();
return 0;
}
String de la STL
Este es muy similar al vector pero más adecuado para trabajar con texto.
En este caso no debería usarse el string porque se almacenan todos lo números en línea y si fuesen números de 2 cifras, se te descuadrarían en donde están las posiciones. Tendría fácil solución, como añadir un espacio tras cada número y recorrer todo el string imprimiendo los números entre espacios.
Te pongo el string de la STL porque a parte de que se puede usar para tu tarea es de los contenedores más sencillos y versátiles.
#include <iostream>
#include <string>
using namespace std;
int main() {
string numeros = "";
for (int i = 0; i < 10; ++i) {
numeros += i;
}
cout << static_cast<int>(numeros[0]) << endl; /* 0 */
cout << numeros[1] << endl; /* 1 */
cout << numeros[3] << endl; /* 3 */
cout << numeros[8] << endl; /* 8 */
cout << numeros[9] << endl; /* 9 */
cin.get();
return 0;
}
A parte de estos mencionados tienes otros de la STL como MAP, SET, LIST... Cada uno sirve para una tarea en concreto y tiene ventajas de velocidad en algunos aspectos, desventajas en otros y ciertas características y métodos únicos.
También tienes tipos de datos básicos de C/C++. Incluso podrías usar la memoria directamente con punteros, que básicamente es lo que hacen los arrays y similares, aritmética de punteros.
Lo mejor es que te pilles un libro bueno para que sepas lo que tienes que ir aprendiendo y en que orden.
Si sabes leer en inglés en el foro de dudas generales tienes un listado de libros de C++ entre otras cosas.