Seite 1 von 1

qBinarySort

Verfasst: 30. Oktober 2014 13:35
von nelo
Hallo,

ich habe folgendes Problem.
Ich möchte mittels der QT funktion QBinaryFind den gesuchten Wert finden.
Ich habe ein selbsdefiniertes strukt geschrieben das ein Multideminsionales Array darstellung soll.

Code: Alles auswählen

typedef struct
    {
        QString date;
        double consum;
    }strucDOT;

    typedef struct
    {
        QList<strucDOT*> dotList;
        double offset;
    }strucGraph;
    QList<strucGraph*>     myGraph;
Jedoch kommt beim asuführen folgender Fehler
"invalid conversion from 'unsigned int' to 'QVector <double>::iterator {aka double*}
wo liegt hier der Fehler? Kann ich überhaubt binaryFind in einem eigenen Struct anwenden?

Code: Alles auswählen

QVector<double>::iterator i = qBinaryFind(QDateTime::fromString(myGraph.at(0)->dotList.at(0)->date).toTime_()),               QDateTime::fromString(myGraph.at(0)->dotList.at(myGraph.at(0)->dotList.count()-1)->date).toTime_t(), 
64800);
Gruß Nelo

Re: qBinarySort

Verfasst: 30. Oktober 2014 14:15
von Christian81
Zuerst ein paar Dinge die nichts mit dem Compiler-Problem zu tun haben
1. ist die Liste auch wirklich sortiert
2. Doku zu qBinaryFind: Use std::binary_search or std::lower_bound instead.

Und nun zum Problem: qBinaryFind möchte einen Iterator auf begin und end, nicht die Werte vom ersten und letzten Element.

Re: qBinarySort

Verfasst: 30. Oktober 2014 16:01
von nelo
Hallo Christian,

das Datum ist schon Sortiert. Vom kleinsten zum größten.
Zu dem Problem mit begin und end. Hier frage ich mich ob man dies überhaupt im strukt richtig abfragen kann?
Auserdem sagt man doch normalerweise mit begin das erste und mit end das letzte element an?

Gruß Nelo

Re: qBinarySort

Verfasst: 30. Oktober 2014 20:42
von Christian81
Es ist nunmal nötig den begin() und end() - Iterator anzugeben anstatt das erste und letzte Element ... -> C++ Grundlagen