Vektor-iterator-Vergleich

Ich habe ein problem beim vergleichen der Werte in zwei Vektoren.

Folgenden wird der Beispiel-code von meinem Programm:

  template <typename T> bool CompareVectors(std::vector<T> vector1, std::vector<T> vector2)
  {
    std::sort(vector1.begin(),vector1.end());
    std::sort(vector2.begin(),vector2.end());
    if (vector1.size() != vector2.size())
      return false;
    else
    {
      bool found = false;
      std::vector<T>::iterator it;
      std::vector<T>::iterator it2;
      for (it = vector1.begin();it != vector1.end(); it++)
      {      
        for(it2 = vector2.begin(); it2 != vector2.end(); it2++)
        {
          if(it == it2) //here i have to check the values in the itearators are equal.
          {
            found = true;
            break;
          }
        }
        if(!found)
          return false;
        else
          found = false;
      }
      return true;  
    }
    };

In diesem Beispiel-code habe ich zum vergleichen von zwei Vektoren. Dafür habe ich sortiert, die zwei Vektoren mit std::sort(). Da der Datentyp vector ist ein template (ich verwende eine class-Objekt im vector), die std::sort() wird nicht richtig funktionieren. Sprich, manchmal sind die beiden Vektoren unterschiedliche Reihenfolge der Elemente nach dem Sortieren.

So, ich bin nicht in der Lage zu verwenden, die std::equal() Funktion auch.

Für eine alternative Lösung, ich habe zwei Iteratoren für die twi-Vektoren.

Und Durchlaufen ein Vektor und sucht das element des anderen Vektors. Für dieses iterator-Vergleich ist nicht brauchbar.

Wie implementieren Sie operator< für die Sortierung ? Es ist wohl das problem ... Meine Wette ist, Sie haben einen Vektor von Zeigern und dass Ihre Elemente sortiert werden, indem Sie Ihre Adresse anstelle Ihrer Werte.
Haben Sie definiert die < und == - operator für die Klasse, die Sie verwenden?
yaa ich definiert haben,== , < , != Operatoren für die Klasse, die ich verwende, Ja... ich bin mit poinetr element in den Vektoren für den Vergleich.So das ist das problem mit std::Sortieren. Es ist also eine Sortierung mit Adresse.

InformationsquelleAutor Aneesh Narayanan | 2012-03-12

Schreibe einen Kommentar