Arrays mit Definitionsbreich



  • Hallo,
    wer in der Pascalwelt umher irrt sollte wissen das es dort Array eines bestimmten Bereichs gibt

    Foo = array[x..n] of tbar;
    

    so das bedeutet der Index des Arrays beginnt nicht mit 0 sondern mit x.

    Gibt es eine Möglichkeit ein solches Array in C / C++ zu definieren wo der Startparameter nicht 0 ist?

    Danke für eure hilfe


  • Mod

    Nicht mit dem eingebauten Datentyp Array. Und die Arrayklasse der Standardbibliothek, std::array, kann das auch nicht. Aber es sollte nicht sonderlich schwer sein, eine eigene Arrayklasse dafür zu definieren. Eigentlich kannst du alles von std::array übernehmen, außer Konstruktion (muss die Grenzen bekommen) und Indexzugriff (operator[] und at() müssen die Grenzen wieder auf korrekte Indizes umrechnen).



  • Nein.

    Bzw. könntest du es natürlich tun, indem du in einer eigenen Klasse den operator[] entsprechend anpasst. Mach das nicht. Das verwirrt nur. In C++ geht jeder davon aus, dass Arrays bei 0 beginnen.



  • @SeppJ
    Eigentlich könnte ich dann mit einem Childobjekt von std::array Arbeiten und dem einen neuen Construktor spendieren?
    Danke auf jedenfall. Hätte ich so garnicht dran gedacht.

    @wob
    ich würde nicht Fragen wenn ich es nicht anders gehen würde.



  • assaziel schrieb:

    ich würde nicht Fragen wenn ich es nicht anders gehen würde.

    Es geht meistens anders. Anstatt dir eine neue Array Klasse zu definieren, könntest du zum Beispiel einfach Wrapper Funktionen auf andere Index Bereiche implementieren.
    Wenn die noch vernünftige Namen haben, kommt dann auch der nächste Entwickler damit klar und wundert sich nicht, warum zum Teufel die Indizes mit einer Fantasienummer anfangen.

    Aber ich kann mir grade tatsächlich keine Anwendung vorstellen, bei der das Nötig sein könnte. Vielleich bin ich einfach zu fantasielos.



  • Okay also wurde erledigt. Wir haben jetzt doch einfach den Idx runter gerechnet auf null.
    ist immer etwas nervig wenn man bei Protierungen irgend welche Sprachspezifischen Konstrukte hat die nicht in die Protiertesprache übertragen werden können.



  • assaziel schrieb:

    ist immer etwas nervig wenn man bei Protierungen irgend welche Sprachspezifischen Konstrukte hat die nicht in die Protiertesprache übertragen werden können.

    Da braucht man halt mal ne Prothese


Anmelden zum Antworten