3 Stimmen

C++ Sortieren eines Vektors von <T> nach einem Vektor von double

Ich möchte einen Vektor von T nach einem Vektor von double sortieren. Das heißt, wenn ich habe

vector<T> a;
vector<double>b;

Si a es {t1, t2, t3, t4} y b es {3, 1, 5, 2} möchte ich erhalten {t2, t4, t1, t3} .

Ich weiß nicht, wie ich die Vorlage deklarieren soll. Ich versuche etwas wie

template<vector<class T>> vector<T> sortByArray(vector<T> a, vector<double>b)

Und ich habe auch keine Ahnung, wie ich den Funktionskörper schreiben soll.

Danke.

EDIT: Dies ist die Anwendung meines Algorithmus. Ich bekomme es nicht richtig hin.

template <typename T> struct dataPair
{
    dataPair(double s, T o) 
    : m_sortData(s)
    , m_otherData(o)
    {

    }

    bool operator< (const dataPair &rhs) { return (m_sortData < rhs.m_sortData); }

    double m_sortData;
    T m_otherData;

}

  template <class T> vector<T> sortByArrayStuff(vector<T> objects, vector<double> sortNumber) {
    vector<dataPair<T>> v;
    for (unsigned int i = 0; i < objects.size(); i++) {
        v.push_back(dataPair<T>(objects[i], sortNumber[i]));
    }
    sort(v.begin(), v.end());
    vector<T> retVal;

    for (unsigned int i = 0; i < objects.size(); i++) {
        retVal.push_back(dataPair<T>(objects[i], sortNumber[i]));
    }
    return retVal;
};

Ich möchte dieselbe Vorlage für Vektoren von "Punkten" und Vektoren von Vektoren von "Punkten" verwenden:

vector<double> sortedAreas;
vector<Point> sortedPoints = sortByArray<vector<Point>>(points, sortedAreas);
vector<vector<Point>> sortedContours = sortByArray<vector<vector<Point>>>(contours, sortedAreas);

Fehler ist

cannot convert parameter 1 from 'dataPair<T>' to 'cv::Point &&'
          with
          [
              _Ty=cv::Point
          ]
          and
          [
              T=cv::Point
          ]
          Reason: cannot convert from 'dataPair<T>' to 'cv::Point'
          with
          [
              T=cv::Point
          ]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X