C ++ benannte Arrays

7

Ich möchte Arrays wie folgt erstellen:

%Vor%

Aber ich bekomme diesen Fehler:

%Vor%

Ist es möglich solche Arrays in C ++ zu erstellen? In PHP und Javascript sind sie sehr einfach und ich bin ein bisschen überrascht, wie kann ich das hier machen?

    
Adam 30.08.2011, 13:06
quelle

4 Antworten

15

Array kann nur durch Ganzzahlen indiziert werden. Wenn Sie nach Zeichen indexieren möchten, benötigen Sie std :: map oder std :: unordered_map in C ++ 11 . std :: unordered_map ist eigentlich eine Hashtabellenimplementierung. Auf der anderen Seite ist std :: map ein rot-schwarzer Baum. Wählen Sie also, was Sie brauchen.

%Vor%     
Mu Qiao 30.08.2011, 13:07
quelle
17

Die Datenstruktur, nach der Sie suchen, wird manchmal als "assoziatives Array" bezeichnet. In C ++ wird es als std::map implementiert.

%Vor%

Sie müssen die Dimensionen nicht angeben, da ein map immer dann wächst, wenn ein neues Element eingefügt wird.

    
Robᵩ 30.08.2011 13:08
quelle
2

PHP und Javascript sind nicht stark typisiert, in C ++ sollten Sie eine Struktur erstellen, die Ihren Benutzer beschreibt, anstatt sich auf willkürliche Zeichenfolgen als Schlüssel zu verlassen:

%Vor%

Dann können Sie tatsächlich einen Index erstellen, um diese Benutzer namentlich zu benennen (Sie können diesen Namen auch im Benutzer speichern). Die zwei Container, die dies tun, sind im Allgemeinen std::map und std::unordered_map .

%Vor%

Beachten Sie, dass ich die Suche im Array zwischengespeichert habe, indem Sie eine Referenz erstellt haben (und dass das Objekt automatisch erstellt wird, falls es nicht bereits vorhanden ist).

    
Matthieu M. 30.08.2011 13:15
quelle
2

Nein, das ist mit C ++ leider nicht möglich. Sie müssen Zuordnungstypen wie std::map oder etwas Ähnliches verwenden, um das zu erreichen, was Sie versuchen.

Sie könnten versuchen, so etwas zu verwenden:

%Vor%     
Constantinius 30.08.2011 13:10
quelle

Tags und Links