Array mit Startindex != 0



  • Hallo,

    ich bräuchte einen Container wie Vector, mit dem Unterschied, dass ich den Startindex frei wählen können müsste. Bevor ich das selber implementiere: Weiss jemand, ob es davon eine Implementation gibt, die man als Standard ansehen kann?



  • Say what? Du musst ja nur irgendwo eine Konstante definieren und diese bei jedem Index-Zugriff abziehen...

    Bevor man hier tiefergreifend antwortet ist es glaube ich für uns gut zu wissen wofür du soetwas benötigst...

    MfG SideWinder



  • IMHO gibt es sowas nicht, weil:

    1. eigentlich nicht nötig (wozu bräuchte man das UNBEDINGT?)
    und
    2. wenn doch nötig trivial mit den Standard-Containern nachzubauen...
    (du brauchst ja nur immer vom gegebenen Index den Startindex substrahieren
    und schon hast du wieder einen 0-basierten Index)

    Ein Container, der Startindex != 0 unterstützt, würde das sowieso so machen 😉
    In sofern ist auch ein 0-basiertes System empfehlenswerter, da hier eine
    sinnlose arithmetische Operation wegfällt... (werden wahrscheinlich einige wieder als premature optimization bezeichnen...)

    Aber sag uns eben einfach mal, wozu du das brauchst,
    denn wie gesagt, IMO kann man auf Startindex != 0 recht gut verzichten...



  • Ich bin zwar ein Anfänger aber was ist mit std::map ?

    #include <map>
    #include <string>
    
    int main()
    {
        using namespace std;
        map<int, string> mymap;
        mymap[12] = "test";
    }
    

  • Mod

    dernoob schrieb:

    Ich bin zwar ein Anfänger aber was ist mit std::map ?

    Mag zwar nach außen hin so aussehen, intern sind die Daten jedoch ganz anders angeordnet als in einem array-artigen Container. Das heißt nicht, dass es unbedingt eine falsche Lösung für das Problem des Threaderstellers ist (da wir das Problem des Threaderstellers nicht kennen), aber bei der Entscheidung, was besser ist, müssen die sehr unterschiedlichen Laufzeitkomplexitäten zwischen map und vector beachtet werden:
    http://www.cplusplus.com/reference/stl/ (runterscrollen zu "Member map")


Anmelden zum Antworten