Vektoren unter objective C

  • Vektoren unter objective C

    Hallo,
    ich muss mit Hilfe von Vectoren, so wie sie in Java implementiert sind einen abstrakten Datentyp für binäre Bäumer erstellen.

    Leider finde ich weder auf der ADC Seite noch in meinen zwei objectiveC Büchern Dokumentation dazu.

    Ich kann mir aber nicht vorstellen, das so ein prominenter Datentyp nicht im Standart objective C existiert.
  • Original von Tom9811
    Original von hns
    Das ist schon etwas seltsam eine lineare Liste/Array als Vector zu bezeichnen..

    Das ist die übliche Bezeichnung in C.
    So geht es wenn man vor 25 Jahren mal C gelernt hat und seit 10 Jahren nur noch Obj-C macht :)

    Der Deutsche K&R spricht tatsächlich von Vektor und nicht von Array. Den Englischen habe ich leider nicht mehr so dass ich nicht weiss ob das nur eine Eindeutschung ist woraus man keinen Rückschluß auf Java/C++ machen darf.

    -- hns
  • Original von Jamsven
    Tja, und da ich auch der C++/Java Ecke komme, habe ich mir erstmal nen Ast nach diesem Datentyp gesucht.

    Es ist auch in C++ der übliche Begriff.
    fredosaurus.com/notes-cpp/stl-…vector/header-vector.html
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von hns
    Original von Tom9811
    Original von hns
    Das ist schon etwas seltsam eine lineare Liste/Array als Vector zu bezeichnen..

    Das ist die übliche Bezeichnung in C.
    So geht es wenn man vor 25 Jahren mal C gelernt hat und seit 10 Jahren nur noch Obj-C macht :)

    Der Deutsche K&R spricht tatsächlich von Vektor und nicht von Array. Den Englischen habe ich leider nicht mehr so dass ich nicht weiss ob das nur eine Eindeutschung ist woraus man keinen Rückschluß auf Java/C++ machen darf.

    Vektor ist eine Eindeutschung von Vector, dem englischen Begriff dafür.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Jamsven
    Warum?


    Weil Vector Thread-Safe ist und das in 99% der Fälle überhaupt nicht benötigt wird. Das Problem ist dann eine üble Performance.

    Vector entstand zu Anfangszeiten von Java, wo alles Thread-Safe sein musste, weil man dachte das wäre toll. ;) Der Ruf "Java ist langsam" rührt daher.

    Sofern du du ein Array nicht von mehreren Threads aus befüllen willst, nimm lieber ArrayList (schnelles lesen) oder LinkedList (schnelles schreiben). Aber egal wie man es macht, Vector ist immer noch das Langsamste von allen.
  • Original von karrade
    in der mathematik wird es auch so bezeichnet. eine matrix mit einer spalte ist ein vektor…
    Die Klasse namens "Vector" (oder NSMutableArray) definiert aber eher eine Liste statt einen mathematischen Vektor. Denn es gibt Methoden um die Zahl der Elemente abzufragen oder Elemente einzufügen/löschen. Das macht man mit Vektoren in der Mateh oder Physik nicht...

    Ihr habt ja recht: selbst in APL hieß das auch schon Vektor, Matrix oder Tensor. Da kann man n-dimensionale Matrizen bearbeiten.

    Aber all das ist in Obj-C ziemlich schlecht repräsentierbar und das war ja die ursprüngliche Frage.

    -- hns
  • Wir hätten dann in c noch Vektoren anzubieten. Die bedienen sich der Vektorregister der CPU (falls vorhanden) und können dann mehrere Skalare in einem Rutsch bearbeiten.

    Will heissen, das wir den Begriff schon für was Anderes verwenden, eben für ein Register, virtuell oder physikalisch, das dann unseren Vektor im mathematischen Sinne enthält.


    Gruß
    Manfred
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Original von kressevadder
    Wir hätten dann in c noch Vektoren anzubieten. Die bedienen sich der Vektorregister der CPU (falls vorhanden) und können dann mehrere Skalare in einem Rutsch bearbeiten.

    Will heissen, das wir den Begriff schon für was Anderes verwenden, eben für ein Register, virtuell oder physikalisch, das dann unseren Vektor im mathematischen Sinne enthält.


    Gruß
    Manfred

    Gibs zu, Du hast wieder ohne uns an der Pulle genuckelt ;)
  • Original von hns
    Original von karrade
    in der mathematik wird es auch so bezeichnet. eine matrix mit einer spalte ist ein vektor…
    Die Klasse namens "Vector" (oder NSMutableArray) definiert aber eher eine Liste statt einen mathematischen Vektor. Denn es gibt Methoden um die Zahl der Elemente abzufragen oder Elemente einzufügen/löschen. Das macht man mit Vektoren in der Mateh oder Physik nicht...

    Sicher?
    Also, wenn ich den Betrag eines Vektors ermitteln muss,dann schreibe ich ganz mathematisch:
    |a| = sqr( sigma( i-> n, a(i))

    Ich sehe da sowohl die Anzahl als auch einen Index.

    Ein Vektor ist ein eindimensional geordnetes Tupel. In C. In C++. In der Mathematik. Und ein Array in Objective-C ist ebendies.

    Was man damit macht oder machen kann, spielt keine Rolle.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Ein Vektor ist ein eindimensional geordnetes Tupel. In C. In C++. In der Mathematik. Und ein Array in Objective-C ist ebendies.
    Frage: Wie heisst der Summen-Reduktions-Operator für NSMutableArray? Natürlich kannst Du den programmieren.

    Anders gesagt - Du kannst viele Datenstrukturen benutzen um ein n-Tupel abzubilden und dann Vektor-Operationen drauf definieren. Geht z.B. auch mit einem Baum oder einem FILE... Würdest Du daher ein FILE auch als Byte-Vector bezeichnen?

    Aber ich glaube wir sind mal wieder auf der Ebene "nutzlose Spitzfindigkeiten" gelandet. Und dem Fragesteller hilft das vermutlich nicht weiter.

    -- hns
  • Original von hns
    Original von Tom9811
    Ein Vektor ist ein eindimensional geordnetes Tupel. In C. In C++. In der Mathematik. Und ein Array in Objective-C ist ebendies.
    Frage: Wie heisst der Summen-Reduktions-Operator für NSMutableArray? Natürlich kannst Du den programmieren.

    Man muss nicht alle Operationen programmieren, damit ein Array ein Tupel ist. Es geht um die Datenstruktur, nicht was man wo wann damit macht.

    Original von hns
    Anders gesagt - Du kannst viele Datenstrukturen benutzen um ein n-Tupel abzubilden

    Ja, das war aber nicht de Frage. Die Frage war, ob ein C-Vektor bzw. ein Objective-C-Array ein Vektor im mathematischen Sinne sind. Das sind sie.

    Dass es andere Contaiiner gibt, um Vekroten darzustellen ist mir klar. Ich hatte zwei genannt. Es Dsa ändert aber nichts daran, dass ein C-Vektor und ein Array Vektoren im mathematischen Sinne sind.

    Original von hns
    und dann Vektor-Operationen drauf definieren. Geht z.B. auch mit einem Baum oder einem FILE... Würdest Du daher ein FILE auch als Byte-Vector bezeichnen?

    Selbstverständlich ist eine Datei ein Byte-Vektor im mathematischen Sinne. Du verwechselst allerdings Struktur mit Implementierung. Es geht um die Frage, wie die Daten strukturiert sind. Ein Tupel ist indiziert Das ist auch eine Datei

    Original von hns
    Aber ich glaube wir sind mal wieder auf der Ebene "nutzlose Spitzfindigkeiten" gelandet. Und dem Fragesteller hilft das vermutlich nicht weiter.
    Nö, eigentlich nicht. Es ging um die Frage, ob ein C-Vektor ein Vektor im mathematischen Sinne ist.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?