En C++ tienes la clase
map que es un tipo de contenedor asociativo que utiliza claves (keys) únicas y no índices numéricos como sucede en el array para acceder a los valores. Como menciona sephirot47 hay lenguajes de programación como JavaScript, ActionScript, PHP, etc. que implementan este tipo de contenedor de manera nativa (array asociativo), sólo que los keys están restringidos a identificadores de tipo string, en un map de C++ puedes utilizar cualquier tipo de dato que tenga definido el operador <.
Ejemplo 1
Ejemplo2:
Código C++:
Ver original#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){
map<string, int> scores;
for(int i = 1; i <= 5; ++i){
scores[string("subject") + char('0' + i)] = i;
}
cout << scores["subject1"] << endl;
cout << scores["subject2"] << endl;
cout << scores["subject3"] << endl;
cout << scores["subject4"] << endl;
cout << scores["subject5"] << endl;
return 0;
}
Ejemplo3:
Código C++:
Ver original#include <iostream>
#include <map>
using namespace std;
class MyType{
double x;
public:
MyType(double val):x(val){}
bool operator<(const MyType& m)const{return x < m.x;}
double get(){return x;}
};
int main(){
map<MyType, int> myMap;
MyType a(12.3);
MyType b(5.5);
myMap[a] = 0;
myMap[b] = 1;
cout << "myMap[a=" << a.get() << "] = " << myMap[a] << endl;
cout << "myMap[b=" << b.get() << "] = " << myMap[b] << endl;
return 0;
}
Utiliza lo que creas más conveniente y dale prioridad a lo más simple, opciones tienes muchas.