Karte wie Struktur in C: mit int und struct zu bestimmen, ein Wert

Ich verwendet, um code in C++ und nun versuche ich ein Programm in C.

Angenommen ich habe eine struct

struct point{
    int x;
    int y;
}

Gibt es eine Daten-Struktur A im c unterstützen können die folgende Funktionalität:
Gegeben seien zwei ganze zahlen, sagen i und j, und zwei Punkte, sagen p1 und p2.
A[i][j][p1][p2] können eindeutig bestimmen einen Wert.

Es klingt wie ein 4-d-array. Aber die Indizes sind nicht mehr int, aber benutzerdefinierte struct.

  • Warum nicht erstellen Sie einfach eine Hash-Funktion für Ihre Punkte und verwenden, die als ein index?
  • Es gibt keine Phantasie-Daten-Struktur in C. Sie haben das Rad neu zu erfinden für sich selbst, oder gehen Sie zurück zu C++ !
  • Es gibt nichts wie dies in C. kann Man nicht definieren, die Operatoren in C. Die nächste Sache, die Sie haben können, ist eine benutzerdefinierte hash-Funktion, die Sie verwenden, um den index in ein array oder etwas ähnliches. Der Punkt ist: Sie sind ziemlich viel gebunden built-in-Typen und erfinden alles selbst.
  • Es sieht aus wie ein sechs-dimensionales array der sortiert...
  • Wie schon andere gesagt haben: Entweder gehen Sie auf der Suche nach "Hash-code in C", oder suchen Sie die Grundlagen von hashtables und die Implementierung einer de-novo -. Es ist gar nicht so schwer; ich habe realisiert Sie mehrere Male. Der wesentliche Unterschied zu aus der Benutzer-Sicht wird sein, dass, anstatt zu sagen myHashTable.put(key,value) werden Sie brauchen, um zu sagen putToHashTable(myHashTable,key,value) und so weiter. (Es sei denn, Sie wollen wirklich neu erfinden OO und beginnen mit dem Aufbau der Methode dispatch in Ihre Objekte-das ist möglich, aber übertrieben für diesen einfachen Fall.)
InformationsquelleAutor user3341338 | 2014-02-22
Schreibe einen Kommentar